【发布时间】:2016-05-11 17:14:04
【问题描述】:
我的应用程序中有一个经典的 Flux 模式,使用 fluxible。输入的 value 与我的组件的 prop 相关联,它的 onChange 调用一个动作,该动作又更新一个 store,而 store 又将一个 prop 传递给我的组件:
class MyComponent extends React.Component {
handleChange(e) {
this.context.executeAction(persist, { value: e.target.value });
}
render() {
return <input value={this.props.value} onChange={this.handleChange.bind(this)}/>;
}
}
我遇到的问题是,当商店发出更改并且新值被传递到我的组件中时,这会导致它重新渲染,并且输入光标位置丢失(移动到最后)。
我知道我可以为我的组件创建一个自定义的shouldComponentUpdate 方法,但是这样做有点棘手,而且我认为这是一种非常频繁出现的模式,这绝对是乏味的。
是否有一种完善的模式来避免对受控输入进行重新渲染?
【问题讨论】:
-
对我来说已经有一段时间了,但我记得我所有的表单都在管理自己的状态,以防止在用户编辑它时对其进行更改。也许您只能在用户输入不等于
this.props.value的内容时设置状态值。只是一个想法。 -
感谢@JasonRice,我得出了非常相似的结论。
标签: javascript reactjs flux fluxible