所以,我试图学习一些反应,到目前为止egghead.io还不错,但我有一个问题。我有以下代码:
https://jsfiddle.net/42pe/69z2wepo/49393/
基本上这些是3个滑块,用于更新父组件的状态。很简单。
具体来说,我可以像这样更新状态(通过传递val和颜色):
updateMe(val, color) {
let obj = {};
obj[color] = val;
this.setState(obj);
}
或者我可以使用Slider引用findDOMNode()
然后获取更新状态的值,但这感觉不对。我不知道React在后面做了什么,但是从一个实例调用一个函数,只是为了让函数可以再次找到实例以获得它的值,当实例本身可以传递它的值时(值和颜色道具)一直都很奇怪。
那么,出于某种原因,这是一种不好的做法吗?
答案 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
更改州或道具的结果。