反应上下文不引起重新渲染

时间:2020-09-03 19:38:44

标签: javascript reactjs react-context

对此情况感到非常困惑。在上下文中,我有两种方法,一种导致使用者重新渲染就好,而另一种则没有。

这个很好用:

this.setPage = (tag) => {
            this.setState(state => {

                for (let item of tag) {
                    if (!state.tags.includes(item)) {
                        state.tags.push(item)
                    }
                }

                state.currentTags = tag
                return tag
            })
        }

但是这个没有:

this.popPage = (tag) => {
            this.setState(state => {                
                if (state.tags.includes(tag)) {
                    if (state.tags.length == 1)
                        return

                    state.tags.pop()
                    state.currentTags = [state.tags[state.tags.length - 1]]

                    return tag
                }
            })
        }

这些基本上只是将项目推入并弹出到数组中。该代码可以正常运行,但是第二个功能的使用者没有更新

<Page.Consumer>
   {page => /*Components go here*/}
</Page.Consumer>

1 个答案:

答案 0 :(得分:0)

首先,您应该返回状态(不是标签)。我不知道确切是什么标签,但对我来说,将下一个状态设置为标签没有多大意义。 在第二块中,甚至更糟。如果不满足条件,它甚至不会返回任何内容作为下一个状态。