这是一个反应不好的做法吗?

时间:2016-07-18 05:39:48

标签: javascript reactjs

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

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

Refs非常适合您只想要值并且不想更新react组件的状态。例如,在表单中,您可以使用ref来获取所有值并对服务器进行ajax调用。

答案 1 :(得分:1)

使用ES6更好,更清晰的方法是:

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

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