首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >react-redux存储未更新

react-redux存储未更新
EN

Stack Overflow用户
提问于 2019-10-09 17:31:16
回答 4查看 71关注 0票数 0

mapStatetoProps中的值显示为未定义

Index.js文件:

代码语言:javascript
复制
static initialAction() {
    return fetchUsers();
}

render() {

    const user = this.props.user;
    console.log(user);

    return (
        <div className="usersWrapper"></div>
    )
}

const mapStateToProps = state => ({
    user: state. usersR.users.users
});

UserReducer.js文件中的部分代码:

代码语言:javascript
复制
const defaultUserState = {
   users:[],
 }

const userReducer = (state = defaultUserState , action) => {
    switch(action.type){
         case actionType.USER_DATA:
            console.log("update_user_begins",action,action.payload);

            let newState={
                    users: [...state.users, ...action.payload]
                }
            state = {...state,users: newState }          

        break;
    } 

}

console.log(state);

输出结果如下:

action.payload的值为:

代码语言:javascript
复制
[
    { Name: 'ABC', Age: 10, Address: 'COLOMBO 02' },
    { Name: 'DEF', Age: 11, Address: 'COLOMBO 03' },
    { Name: 'wxy', Age: 45, Address: 'Nugegoda' }
]

UserReducer的返回状态为:

代码语言:javascript
复制
{ users: { users: [ [Object], [Object], [Object] ] } }
EN

回答 4

Stack Overflow用户

发布于 2019-10-09 18:01:14

确保不要忘记将您的组件连接到redux存储

export default connect(mapStateToProps)(myComponent)

或者检查mapStateToProps上的路径,并确保它是一个好的路径,或者注销整个状态来检查好的路径:

代码语言:javascript
复制
 render() {
          const state= this.props.state;
           console.log(state);

        return (
           <div className="usersWrapper">
           </div>
 )
    }


    const mapStateToProps = state => ({
        **state: state**

 });
票数 0
EN

Stack Overflow用户

发布于 2019-10-09 20:47:46

我猜,您忘记将return添加到您的reducer中了。

代码语言:javascript
复制
const defaultUserState = {
   users:[],
 }

const userReducer = (state = defaultUserState , action) => {
    switch(action.type){
         case actionType.USER_DATA:
            console.log("update_user_begins",action,action.payload);

            let newState={
                    users: [...state.users, ...action.payload]
                }
            return {...state, users: newState } // <= here is return, not assignment.         

        break;
    } 

}
票数 0
EN

Stack Overflow用户

发布于 2019-10-09 21:01:11

我认为你需要从reducer返回newState,并且不要改变之前的状态,你可以这样做

代码语言:javascript
复制
const userReducer = (state = defaultUserState , action) => {
switch(action.type){
     case actionType.USER_DATA:
        console.log("update_user_begins",action,action.payload);

        let newState={
                users: [...state.users, ...action.payload]
            }
        return {...state, users: action.payload }          

} 

}

希望能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58301104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档