Javascript 在何处存储状态以使React组件更可重用
我有一个autocomplete组件,它有以下支柱:Javascript 在何处存储状态以使React组件更可重用,javascript,reactjs,Javascript,Reactjs,我有一个autocomplete组件,它有以下支柱: 值(显示文本) onChange(每次击键时触发) onSelect(当用户从 建议,传递选定对象+显示选定对象的文本-与值相同 声明: -suggestionsList(我决定它是一种状态,因为它是组件内部的东西) 在其中一个视图上,此组件的父级不关心每次击键后的值。它只关心由onSelect处理程序传递的所选项目。所以在这个场景中,不需要value&onChange道具值可能成为自动完成组件的内部状态 但在另一个视图中,家长也希望了解
(显示文本)值
(每次击键时触发)onChange
(当用户从 建议,传递选定对象+显示选定对象的文本-与onSelect
值相同
suggestionsList
(我决定它是一种状态,因为它是组件内部的东西)
在其中一个视图上,此组件的父级不关心每次击键后的值。它只关心由onSelect
处理程序传递的所选项目。所以在这个场景中,不需要value
&onChange
道具<代码>值
可能成为自动完成组件的内部状态
但在另一个视图中,家长也希望了解每个按键的情况。这意味着父级需要将值保持在其状态,并将其作为道具传递onChange
props还需要通知父级更改其状态
如何构造autocomplete组件以处理这两种情况?哪些属性应该是道具,哪些状态
任何建议都值得赞赏。在第二种情况下,如果父级需要知道当前的值,它不需要保存变量,因此我猜如果您将当前的值
(从内部状态变量)作为参数传递给onChange
prop函数,家长将注意到更改并相应更新
另一种方法是使用value
属性和内部状态变量。我的意思是:如果父对象希望控制值
,它将有一个状态条目,并负责更新它,在其他情况下,不能提供值
属性,因为它将作为常量结束。每次提供组件时,您的组件将使用此属性作为当前值,并且父组件应使用onChange
更新va;它所持有的价值观
您可以在中检查自动完成组件的源代码 父级不需要将值保持在其状态,它只需要提供一个onChange
处理程序,您可以从中检索值。它可能需要将值保持在其状态,但不必这样。因此,如果组件接收到一个onChange
属性(来自父级的函数),它需要调用它自己的onChange
@DaveNewton,谢谢。这是一个有用的建议。假设问题中的第一个场景:父级不需要值
。我将组件的值更改为内部状态,并使用onSelect
props处理程序通知家长所选项目。到目前为止一切都很好。现在第二种情况如何(家长希望在每次击键时更新)?父级是否应通过onChange
并将值保存在其自己的状态中(value
状态将在父级和子级中重复)?我的目标是编写处理这两种情况的单个组件。是的,如上所述,如果父级将onChange
处理程序传递给组件,组件将需要调用它作为其内部onChange
处理的一部分。因此,似乎我将按照模式将value
作为内部状态,并从提供的道具设置它onChange
将更新内部值
状态,并调用用props传递的父处理程序。我认为这是最好的办法。谢谢