【问题标题】:React Native: changing state via external function doesn't rerenderReact Native:通过外部函数更改状态不会重新渲染
【发布时间】:2018-02-20 02:33:18
【问题描述】:

我根据需要创建了一个函数,仅当它与以前的值不同时才更改状态(即,如果不相同则切换)。但是,它不会重新渲染组件。有人可以让我知道我做错了什么吗?但它确实改变了状态。

export function toggleState(thi_s, k, new_v)
{
    if(thi_s.state[k]!=new_v)
    {
        thi_s.state[k] = new_v;
        return true;
    }

    return false;
}

。 .

[用法]

if(this.state.xyz!=true) this.setState({xyz:true}); //does rerender as expected

.

toggleState(this, 'xyz', true); //doesn't rerenders 

状态更改无需重新渲染,我可以在调用后立即使用console.log 进行检查

【问题讨论】:

    标签: javascript reactjs react-native


    【解决方案1】:

    toggleState 中,你没有调用setState,而是直接改变状态,你不应该这样做,这也是不触发重新渲染的原因:

    thi_s.state[k] = new_v;
    

    改成

    thi_s.setState({[k]: new_v});
    

    此外,您应该考虑使用箭头函数或 .bind(this) 而不是将 this 传递给 toggleState,这样您就可以在函数内部引用 this 而无需将其作为参数传递。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-10
      • 2018-12-12
      • 2020-12-07
      • 2018-11-29
      • 2020-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多