我正在学习 React。不同网站的一些人告诉大家,使用 refs 是一种不好的做法(是的,完全使用它们)。
真正的问题是什么?我将其附加到子组件(以便我可以访问内部内容)是不是有什么不好?
Thanks!
React 需要你思考反应方式 https://facebook.github.io/react/docs/thinking-in-react.htmlrefs 是 DOM 的后门,你几乎永远不需要使用它。为了大大简化,React 的思维方式是,一旦状态发生变化,就重新渲染all依赖于该状态的 UI 组件。 React 将负责确保仅更新 DOM 的正确部分,从而使整个过程高效并向您隐藏 DOM(有点)。
例如,如果您的组件托管 HTMLInputElement,则在 React 中您将连接一个事件处理程序来跟踪输入元素的更改。每当用户键入字符时,事件处理程序就会触发,并且在处理程序中,您将使用输入元素的新值更新状态。状态的更改会触发托管组件重新渲染自身,包括具有新值的输入元素。
这就是我的意思
import React from 'react';
import ReactDOM from 'react-dom';
class Example extends React.Component {
state = {
inputValue: ""
}
handleChange = (e) => {
this.setState({
inputValue: e.target.value
})
}
render() {
const { inputValue } = this.state
return (
<div>
/**.. lots of awesome ui **/
/** an input element **/
<input value={inputValue} onChange={this.handleChange}} />
/** ... some more awesome ui **/
</div>
)
}
}
ReactDOM.render( <Example />, document.getElementById("app") );
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="app">
</div>
请注意,只要输入值发生变化,处理程序就会被调用,setState 也会被调用,并且组件将完全重新呈现自身。
考虑 refs 通常是不好的做法,因为您可能会想只使用 refs 并按照 JQuery 方式做事,这不是 React 架构/思维方式的意图。
真正更好地理解它的最好方法是构建更多的 React 应用程序和组件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)