使用forceUpdate更新父母的状态

时间:2019-07-11 19:00:08

标签: reactjs

更新父级的通常解决方案是将方法从父级传递给子级,然后从子级使用props.method。但是,在我的情况下,父类变得太大了,所以我想知道这样做有什么缺点吗?

<input value={message.sometext}
       onChange={(e) => {
         message.sometext = e.target.value;
         self.props.forceUpdate();
       }}/>

通过使用此方法,我可以将逻辑移到孩子身上,并使父母更苗条。还是强制更新整个状态不是一个好主意?为什么或者为什么不?我是React的新手,很抱歉遇到一个可能很愚蠢的问题。非常感谢。

1 个答案:

答案 0 :(得分:0)

否,强制对子项进行更新不会触发对父项的更新。 forceUpdate仅在您读取renderstate以外的props中的值时使用,因为这种情况发生时,React不知道何时触发更新,但这不是一个好主意,您应该始终仅读取stateprops,以避免不可预测的行为。您既可以集中状态(使用Redux或类似的方法),也可以使子组件变为有状态(通常不是很好的想法),也可以将父级的updater函数传递给子组件(虽然不漂亮,但效果很好)。