【问题标题】:Reactjs every time refreshing page on setStateReactjs每次在setState上刷新页面
【发布时间】:2017-06-08 07:06:02
【问题描述】:

我使用MultiSelect Plugin 选择下拉菜单。在 onChange 事件中,我将值存储在 setState 中。下面是代码:

$('#selectbox-id-onChange').multiselect({
    onChange: function(option, checked) {
         var newArray = this.state.options.slice();
         newArray.push($(option).val());
         this.setState({options: newArray});           
    }
});

上面的代码工作正常,我也可以将数组值存储在 state 中。但唯一的问题是页面每次都在刷新,同时将值存储在状态中。

请务必让我知道我在哪里出错了。我试图弄清楚但无法得到解决方案。

【问题讨论】:

  • 为什么你是带有 react 的 jquery 插件。我会建议使用上述插件的 React 版本。 github.com/skratchdot/react-bootstrap-multiselect
  • React 会在状态改变时重新渲染组件。
  • React 会在每次状态改变时重新渲染。这就是它不断刷新/更新组件的原因。您是否尝试过将它与onBlur 一起使用而不是onChangeonBlur 方法会在离开组件时触发。
  • @Ved,感谢您的更新。我一定会调查的。

标签: reactjs


【解决方案1】:

是的,这就是 React 的本意。如果您不希望它不重新渲染,那么您必须重写 shouldComponentUpdate 方法。

shouldComponentUpdate() {
    return false; // Will cause component to never re-render.
}

【讨论】:

  • 这不应该是一个理想的做法,另外我认为刷新应该与重新渲染不同,setState 会导致重新渲染而不是刷新
  • @Alex,感谢您的更新。现在一切正常。
  • @ShubhamKhatri 我正面临这个问题,你能提出一些建议吗?我的页面正在刷新而不是重新呈现。
  • @ShubhamKhatri 我很抱歉。脏话。我的意思是重新渲染。我已经更新了我的答案。
猜你喜欢
  • 2019-05-15
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-10
  • 2017-04-12
  • 1970-01-01
相关资源
最近更新 更多