【问题标题】:Changing the state of a React Component更改 React 组件的状态
【发布时间】:2021-05-11 19:03:37
【问题描述】:

也许这是我措辞的方式,但我没有得到我想要的关于以下主题的答案。所以目前,我的代码看起来像这样(减去所有细节):

<ClickAwayListener onClickAway={handleClickAway}>
  <Autocomplete options={someList} />
</ClickAwayListener>

所以我有两个问题。

  • 这里的自动完成组件是否被认为是 ClickAwayListener 的扩展? ClickAwayListener 是否被视为父组件?
  • 我希望 handleClickAway 函数更改自动完成中的 options 状态。我该怎么做?

我对 React 还很陌生,因此我将不胜感激。提前谢谢你。


【问题讨论】:

    标签: reactjs typescript parent-child react-component


    【解决方案1】:

    看起来您使用的点击离开组件很可能不是按预期使用的方式使用的。看起来应该和this technique一起使用。

    
    <ClickAwayListener onClickAway={handleClickAway}>
      {(isClickedAway) => (
        {/*or whatever api your Autocomplete has*/}
        <Autocomplete options={someList} isOpen={!isClickedAway} />
      )}
    </ClickAwayListener>
    
    

    关于你的问题:

    • ClickAwayListener 是 Autocomplete 的父级。反应树中没有扩展之类的东西。
    • 在您的handleClickAway 中,您必须更改someList。如果它来自 state,那么使用 setState,如果它来自 props - 则带有相应的回调。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-21
      • 2019-03-05
      • 2018-05-06
      • 1970-01-01
      • 1970-01-01
      • 2023-01-23
      • 2016-12-26
      • 2019-12-29
      相关资源
      最近更新 更多