reducers.js中的action.subreddit怎么理解?preloadedState怎么理解啊?

例子

reducers.js

import { combineReducers } from 'redux'
import {
  SELECT_SUBREDDIT,
  INVALIDATE_SUBREDDIT,
  REQUEST_POSTS,
  RECEIVE_POSTS
} from './actions'

function selectedSubreddit(state = 'reactjs', action) {
  switch (action.type) {
    case SELECT_SUBREDDIT:
      return action.subreddit
    default:
      return state
  }
}

function posts(
  state = {
    isFetching: false,
    didInvalidate: false,
    items: []
  },
  action
) {
  switch (action.type) {
    case INVALIDATE_SUBREDDIT:
      return Object.assign({}, state, {
        didInvalidate: true
      })
    case REQUEST_POSTS:
      return Object.assign({}, state, {
        isFetching: true,
        didInvalidate: false
      })
    case RECEIVE_POSTS:
      return Object.assign({}, state, {
        isFetching: false,
        didInvalidate: false,
        items: action.posts,
        lastUpdated: action.receivedAt
      })
    default:
      return state
  }
}

function postsBySubreddit(state = {}, action) {
  switch (action.type) {
    case INVALIDATE_SUBREDDIT:
    case RECEIVE_POSTS:
    case REQUEST_POSTS:
      return Object.assign({}, state, {
        [action.subreddit]: posts(state[action.subreddit], action)
      })
    default:
      return state
  }
}

const rootReducer = combineReducers({
  postsBySubreddit,
  selectedSubreddit
})

export default rootReducer

configureStore.js

import { createStore, applyMiddleware } from 'redux'
import thunkMiddleware from 'redux-thunk'
import { createLogger } from 'redux-logger'
import rootReducer from './reducers'

const loggerMiddleware = createLogger()

export default function configureStore(preloadedState) {
  return createStore(
    rootReducer,
    preloadedState,
    applyMiddleware(
      thunkMiddleware,
      loggerMiddleware
    )
  )
}
阅读 2.9k
2 个回答
    let b2 = (avc) => avc
    let a1 = b2('世界');

    console.log("a1==" + a1)

    function selectSubreddit(subreddit) {
      return {
        type: 'SELECT_SUBREDDIT',
        subreddit
      }
    }

    let action = selectSubreddit("ub");

在你的actions.js文件中有selectSubreddit这个函数,这个函数就是生成一个action对象。

reducer中,是根据action.type来决定对state进行什么操作,在操作的过程中需要用到的其他数据,就是action的其他属性。

这个App有两个数据:selectedSubreddit postsBySubreddit reducers.js中的selectedSubreddit 函数就是用来处理selectedSubreddit 这份数据。我们通过action.type来决定对于selectedSubreddit这个数据采取什么操作,action.subreddit 就是进行这个操作所要用到的相应变量,在这里就是对这个数据的赋值。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题