react.js - redux中 state已更新,但没有重新渲染。

查看:115
本文介绍了react.js - redux中 state已更新,但没有重新渲染。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

列一下核心代码:
通过点击,将state中notes中的某一项的editing属性变更为true(默认是false)
有两种写法,第一种写法会导致state更新了,但没有重新渲染。等下一次某个事件导致state更新时,会将变化一起渲染出来。

const app = (state = {}, action) => {
    switch (action.type) {
        case 'ONEDIT':
             state.notes.find((note) => note.id === action.id).editing = true;
             return {
                  notes: state.notes
             };
    }
};

另一种map写法则正常,state更新后,会正常刷新

const app = (state = {}, action) => {
    switch (action.type) {        
        case 'ONEDIT':
             return {
                notes:state.notes.map((note) => {
                    if (note.id === action.id) {
                        note.editing = true;
                    }
                    return note
                })
             };
    }
};

求大神解释为什么第一种写法不会重新渲染。感激不尽!!!

解决方案

第一种方法返回的不是一个新的对象,所以不行。可以使用object.assign方法。

这篇关于react.js - redux中 state已更新,但没有重新渲染。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆