import { createStore,combineReducers } from 'redux'
//reducer (state, action) => newState
var reducer = function (state = {}, action) {
switch (action.type) {
case 'SET_NAME':
return {
...state,
message: action.name
}
default:
return state;
}
}
//combineReducers
var reducer = combineReducers({
user: userReducer,
items: itemsReducer
})
var userReducer = function (state = {}, action) {
switch (action.type) {
// etc.
default:
return state;
}
}
var itemsReducer = function (state = [], action) {
switch (action.type) {
// etc.
default:
return state;
}
}
//createStore(reducer, [preloadedState], enhancer)
var store= createStore(reducer)
//action
//ͬ同步
var action= function (name) {
return {
type: 'SET_NAME',
name: name
}
}
store.dispatch(action('bob'))
//异步 applyMiddleware(...middlewares) 其实就是action返回一个函数
//({ getState, dispatch }) => next => action
//redux-thunk
export const initList = (data) => {
type: INIT_LIST,
data
}
export const fetchPosts = () => {
return (dispatch) => {
axios.get('url').then((res) => {
const data = res.data;
const action = initList (data);
dispatch(action);
})
}
}
componentDidMount(){
this.props.fetchPosts();
}
// 变化监听器 subscribe(listener)
store.subscribe(() =>
console.log(store.getState())
);