我已经连接了一个简单的React组件(映射一个简单的数组/状态).为了避免引用store 的上下文,我想要一种直接从props 获取"分派"的方法.我见过其他人使用这种方法,但由于某种原因无法使用:)
下面是我目前使用的每个npm依赖项的版本
"react": "0.14.3",
"react-redux": "^4.0.0",
"react-router": "1.0.1",
"redux": "^3.0.4",
"redux-thunk": "^1.0.2"
下面是组件w/connect方法
class Users extends React.Component {
render() {
const { people } = this.props;
return (
<div>
<div>{this.props.children}</div>
<button onClick={() => { this.props.dispatch({type: ActionTypes.ADD_USER, id: 4}); }}>Add User</button>
</div>
);
}
};
function mapStateToProps(state) {
return { people: state.people };
}
export default connect(mapStateToProps, {
fetchUsers
})(Users);
如果你需要看减速机(没有什么令人兴奋的,但它在这里)
const initialState = {
people: []
};
export default function(state=initialState, action) {
if (action.type === ActionTypes.ADD_USER) {
let newPeople = state.people.concat([{id: action.id, name: 'wat'}]);
return {people: newPeople};
}
return state;
};
如果你想知道我的路由是如何配置的
const createStoreWithMiddleware = applyMiddleware(
thunk
)(createStore);
const store = createStoreWithMiddleware(reducers);
var Route = (
<Provider store={store}>
<Router history={createBrowserHistory()}>
{Routes}
</Router>
</Provider>
);
update
看起来,如果我在connect中省略了我自己的分派(目前我正在向fetchUsers展示),我将获得免费分派(只是不确定这是否是带有异步操作的安装程序通常的工作方式).人们是混搭呢,还是全部混搭?
[mapDispatchToProps]