当前在react js中,当我想绑定文本区域或带有“状态”的输入时,我需要在每个用户输入单个字母时设置onChange方法和setState() 我听说如果你setState反应js刷新并重新渲染这个组件中的所有内
我听说如果你setState反应js刷新并重新渲染这个组件中的所有内容
有没有更有效的方法呢?在这种情况下使用“shouldComponentUpdate”将是不正确的,因为如果我不进行“状态”更新,则所有用户输入都将被卡住..
好吧,这就是你在React中实现受控输入元素的方法.但是,如果性能是您的主要关注点,您可以将输入元素隔离在单独的有状态组件中,因此只会触发自身重新渲染而不是整个应用程序.
所以类似于:
class App extends Component { render() { return ( <div> ... <MyInput /> ... </div> ); } } class MyInput extends Component { constructor() { super(); this.state = {value: ""}; } update = (e) => { this.setState({value: e.target.value}); } render() { return ( <input onChange={this.update} value={this.state.value} /> ); } }
或者,您可以使用不受控制的输入元素.例如:
class App extends Component { render() { return ( <div> ... <input defaultValue="" /> ... </div> ); } }
虽然注意到通常建议使用受控输入.