对此情况感到非常困惑。在上下文中,我有两种方法,一种导致使用者重新渲染就好,而另一种则没有。
这个很好用:
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>
答案 0 :(得分:0)
首先,您应该返回状态(不是标签)。我不知道确切是什么标签,但对我来说,将下一个状态设置为标签没有多大意义。 在第二块中,甚至更糟。如果不满足条件,它甚至不会返回任何内容作为下一个状态。