主框架結構react
home/index.js //模塊主文件ios
建立Topic模塊web
階段一 基礎代碼ajax
import React, { Component } from 'react'; import { TopicWrapper, TopicItem } from '../style'; class Topic extends Component { render() { return ( <TopicWrapper> <TopicItem> <img className='topic-pic' src="//upload.jianshu.io/users/upload_avatars/3950651/acfaa0ce-42fe-424a-b7c8-9a0136fb96ec.jpg?imageMogr2/auto-orient/strip|imageView2/1/w/96/h/96/format/webp"/> </TopicItem> </TopicWrapper> ) } } export default Topic;
sotre編寫json
編寫store/index.js文件redux
import reducer from './reducer';
export { reducer };
編寫store/reducer.jsaxios
階段二 Home和Topic數據鏈接api
編寫假數據app
數據異步動態話,在store/actionCreators.js文件裏寫請求數據方法框架
修改store/index.js文件
import reducer from './reducer'; import * as actionCreators from './actionCreators'; import * as constants from './constants'; export { reducer, actionCreators, constants };
在home主文件index.js裏調用函數
若是寫完數據沒有更新那就是忘記修改store/reducer.js
import { fromJS } from 'immutable'; import * as constants from './constants'; const defaultState = fromJS({ topicList: [], }); const changeHomeData = (state, action) => { // 更新state數據,當同時修改多個參數時用merge return state.merge({ topicList: fromJS(action.topicList) }); }; export default (state = defaultState, action) => { switch (action.type) { case constants.CHANGE_HOME_DATA: return changeHomeData(state, action); default: return state; } }
注:在連通store時,數據鏈式流
mapState鏈接好的前提下
actionCreators(action,constants.CHANGE_HOME_DATA)-->store/reducer(action,constants.CHANGE_HOME_DATA)-->store/index-->actionCreators(dispatch)
注:在異步更新數據時,ajax獲取數據後,在reducer.js中也要fromJS一下數據