问下我自己建立一个redux的测试项目.现在reducer和action,store都有了,dispatch一个action后界面上没有发生变化.请问这是为什么
const Tpp = React.createClass({
onClick: function() {
Store.dispatch(Action.test()) //这里会触发test的action
},
render: function() {
return <div>
<div onClick={this.onClick} {...Store}>click</div>
{this.props.config} //原本这里应该自动更新的
</div>
}
});
const TAP = connect(test)(Tpp); //最后render的是这个tap
这是action
export const REDUX_TEST = 'REDUX_TEST';
export const REDUX_TEST2 = 'REDUX_TEST2';
export function test(){
return {
type:'REDUX_TEST',
data:'123123'
}
}
这是reducer
function reducer(state = {},action = {}){
state = dataModule;
switch (action.type){
case 'REDUX_TEST':
state.config= ++state.config;
console.log(state.config);
break;
}
return state
}
这是store建立
export const dataModule = {
config:0
};
export default createStore(Reducer,dataModule)
现在state确实更新了,但是第一段代码里本来应该跟新的地方,没有自动更新,请问怎么做才能让它自动更新啊?
action 和 mapStateToProps 方法搞混了吧, connect 中注入的state不对
TPP组件下面改为
function mapStateToProps(state) {
return {
config: state.config
}
}
const TAP = connect(mapStateToProps)(Tpp)
另外reducer中你直接修改了state,正确的情况应该是 return state + 1,而且你已经在 createStore里面注入了初始状态,即改为
全选复制放进笔记function reducer(state = 0, action) {
switch (action.type){
case 'REDUX_TEST':
return state + 1
default:
return state
}
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。