【问题标题】:React why pass down functions to components anyway?React 为什么仍然将函数传递给组件?
【发布时间】:2019-07-05 20:12:48
【问题描述】:

我只是想知道,为什么我们在一个地方定义每个组件函数(例如 index.js),然后将这些函数传递给组件?这有意义吗?

例如,我想为列表按钮组件定义一个单击处理程序,并为某些表单按钮组件定义另一个单击处理程序,为什么要在一个地方定义它们?分而治之的方法不是更好吗?

我的意思是,为什么我不只是在组件本身中定义我的点击处理程序,它们属于哪里?除此之外,一个地方的所有东西都会变得凌乱且难以维护......

【问题讨论】:

  • IMO 短篇小说:由于数据只能单向绑定,控制组件树顶部的状态可让您将状态发送到任何需要的地方。

标签: javascript reactjs components


【解决方案1】:

我想为列表按钮组件定义一个点击处理程序,为某些表单按钮组件定义另一个点击处理程序,为什么我要在一个地方定义它们?

由于 React 采用的单向数据流的性质,状态沿着树向下流动,事件(即更改)通过处理程序(例如您提到的处理程序)向上传递。树深处的组件可以(或者更确切地说,应该)只能通过 clickHandlers 等将更改传播回去。

处理程序通常只在少数几个地方一起定义的原因是因为这些地方通常表示共享公共状态的点,因此需要在那里处理更新该状态的事件。

【讨论】:

  • 好的,但是让我们假设点击仅在执行点击的子组件中产生影响,例如,在子组件中为不同的颜色着色,而无需跟踪某些状态......那么仅在子组件中实现该功能是否有意义?还是不行?
  • 如果没有其他东西需要知道子组件状态已经改变,那么它可以保持本地状态,当然。最近我一直在使用 Redux 来处理任何应用程序范围的状态,并使用钩子来处理本地组件级的东西。这是一个很好的组合。
  • 好吧,很好地回答了我的问题,这当然是有道理的......我完全忘记了大多数事物都有一个状态,并且状态经常被子组件更改,但会跟踪(或显示它的效果)仅在顶级组件中;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-25
  • 2018-12-01
  • 2020-06-19
  • 2017-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多