【问题标题】:Is this a React bad practice?这是 React 不好的做法吗?
【发布时间】:2016-07-18 05:39:47
【问题描述】:

所以,我正在尝试学习一些反应,到目前为止 egghead.io 还不错,但我有一个问题。我有以下代码:

https://jsfiddle.net/42pe/69z2wepo/49393/

基本上这些是更新父组件状态的 3 个滑块。很简单。

具体来说,我可以像这样更新状态(通过同时传递 val 和 color):

updateMe(val, color) {
    let obj = {};
    obj[color] = val;
    this.setState(obj);
  }

或者我可以使用 Slider 引用 findDOMNode() 然后获取值来更新状态,但这感觉不对。我不知道 React 在后面做了什么,但是从一个实例调用一个函数,只是为了让这个函数可以再次找到实例来获取它的值,当实例本身可以传递它的值(值和颜色属性)时看起来很奇怪。

那么,出于某种原因,这是一种不好的做法吗?

【问题讨论】:

    标签: javascript reactjs


    【解决方案1】:

    这两种方法都是正确的,但更喜欢 updateMe 。在 props 中传递函数和调用该 prop 函数的子函数是 React 中的理想方式。

    Refs 是您只需要值而不想更新反应组件状态的理想选择。例如,在表单中,您可以使用 ref 获取所有值并对服务器进行 ajax 调用。

    【讨论】:

      【解决方案2】:

      使用 ES6 更好更简洁的方法是:

      updateMe(val, color) {
          this.setState({
              [color]: val
          });
      }
      

      findDOMNode 不是一个坏习惯。但是,如果您将应用程序构建为状态和道具的功能,则不需要使用它。 对您的状态或道具的任何更改都应该更改您的 DOM,对您的 DOM 的任何更改都应该是 function of 状态或道具更改的结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-22
        • 1970-01-01
        • 2011-07-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多