Redux: Tindakan tidak pernah terlihat saat dikirim di Store.

Dibuat pada 16 Mei 2016  ·  3Komentar  ·  Sumber: reduxjs/redux

Saya memiliki proyek non Bereaksi dengan kode berikut
.

_index.js_

import configureStore from 'js/store/configureStore'

/* Redux Imports */
import { createPage } from 'js/actions/page'

// Boot the App
document.addEventListener('DOMContentLoaded', function () {
  const initialState = window.__INITIAL_STATE__
  const pageId = window.__INITIAL_STATE__.page
  const store = configureStore(initialState)
  store.dispatch(createPage(pageId))
})

*actions/page.js*
function initPage (pageId) {
  return {
    type: 'CREATE_PAGE',
    page: pageId
  }
}

export function createPage (pageId) {
  return dispatch => {
    dispatch(initPage(pageId))
  }
}

_reducers/page.js_

/**
 * Page Mediators get imported here
 * Page Mediators are brokers that hold page initialization.
 * The bundle includes all page mediators but they will not be activated
 * unless thre reducer calls them.
 */
import * as cart from 'js/templates/cart'

/**
 * This is a edge case, index.js boots the app and we are subscribing to 
 * a Redux @<strong i="11">@INIT</strong> action instead of adding one more layer of actions
 * which leads to unintended scenarios.
 */

const page = (state = {page: []} , action) => {

  console.log(state)
  switch (action.type) {
    case '@<strong i="12">@INIT</strong>':
      console.log('initializing page:' + state.id)
      console.log(state)
      dispatch({type: 'CREATE_PAGE',page: state.id})
      cart.init()
      return state
    case 'CREATE_PAGE':
      console.log('initializing page:' + state.id)
      cart.init()
      return state
    default:
      return state
  }
}
export default page

Masalah yang saya miliki adalah actions/page.js tidak pernah melihat tindakan CREATE_PAGE . Ada pikiran?

Komentar yang paling membantu

Tidak berhubungan tapi

  • Ini adalah kasus tepi, index.js mem-boot aplikasi dan kami berlangganan
  • tindakan Redux @ @INIT alih-alih menambahkan satu lapisan tindakan lagi
  • yang mengarah ke skenario yang tidak diinginkan.

dapat merusak aplikasi Anda setiap hari.

Kami secara khusus mengatakan :

  • Ini adalah jenis tindakan pribadi yang disediakan oleh Redux.
  • Untuk tindakan yang tidak diketahui, Anda harus mengembalikan status saat ini.
  • Jika status saat ini tidak ditentukan, Anda harus mengembalikan status awal.
  • Jangan merujuk jenis tindakan ini secara langsung dalam kode Anda.

Semua 3 komentar

Tidak berhubungan tapi

  • Ini adalah kasus tepi, index.js mem-boot aplikasi dan kami berlangganan
  • tindakan Redux @ @INIT alih-alih menambahkan satu lapisan tindakan lagi
  • yang mengarah ke skenario yang tidak diinginkan.

dapat merusak aplikasi Anda setiap hari.

Kami secara khusus mengatakan :

  • Ini adalah jenis tindakan pribadi yang disediakan oleh Redux.
  • Untuk tindakan yang tidak diketahui, Anda harus mengembalikan status saat ini.
  • Jika status saat ini tidak ditentukan, Anda harus mengembalikan status awal.
  • Jangan merujuk jenis tindakan ini secara langsung dalam kode Anda.

Terima kasih @gaearon - Saya bermaksud menghapus ini, saya menambahkannya karena tindakan yang saya buat tidak pernah terlihat - Apa yang bisa saya lakukan salah?

Silakan gunakan StackOverflow untuk pertanyaan. Kami mencoba menggunakan pelacak masalah untuk diskusi bug dan fitur, tetapi tidak untuk dukungan.

Adapun kode, itu melanggar batasan Redux dengan melakukan efek samping ( cart.init() ) dan mencoba mengirimkan tindakan ( dispatch() ) di dalam peredam. Ini tidak diperbolehkan, seperti yang disebutkan lebih dari sekali dalam dokumentasi. Pengurang harus fungsi murni, jadi Anda harus menempatkan efek samping sebelum atau sesudah mengirim tindakan.

Jika Anda mengirim di dalam peredam, kode Anda akan gagal. Jika tidak gagal, mungkin Anda memiliki Janji menelan kesalahan di suatu tempat. Sulit untuk mengatakan lebih banyak dari potongan kode ini.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

markerikson picture markerikson  ·  44Komentar

ronag picture ronag  ·  46Komentar

bvaughn picture bvaughn  ·  106Komentar

gaearon picture gaearon  ·  69Komentar

acdlite picture acdlite  ·  54Komentar