Javascript 在何处存储状态以使React组件更可重用

Javascript 在何处存储状态以使React组件更可重用,javascript,reactjs,Javascript,Reactjs,我有一个autocomplete组件,它有以下支柱: 值(显示文本) onChange(每次击键时触发) onSelect(当用户从 建议,传递选定对象+显示选定对象的文本-与值相同 声明: -suggestionsList(我决定它是一种状态,因为它是组件内部的东西) 在其中一个视图上,此组件的父级不关心每次击键后的值。它只关心由onSelect处理程序传递的所选项目。所以在这个场景中,不需要value&onChange道具值可能成为自动完成组件的内部状态 但在另一个视图中,家长也希望了解

我有一个autocomplete组件,它有以下支柱:

  • (显示文本)
  • 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传递的父处理程序。我认为这是最好的办法。谢谢