在 React 中的子组件之间传递数据的最佳方式是什么?

迭戈戈莱奥罗

我很想知道如果我们有多个嵌套组件并且我们将回调函数传递给最低级别的组件,然后整个组件树从最低级别组件中的事件呈现,那么 React 应用程序的性能是否会受到影响触发此回调。

如果是这样,解决这个问题的最佳方法是什么?

谢谢。

伊戈尔·洛斯库托夫

有很多方法可以传递数据,但对于函数来说则较少。

可以使用 Redux、useContext 或其他一些外部解决方案,如jotai

其实官方推荐的方式是useContext:https ://reactjs.org/docs/hooks-faq.html#how-to-avoid-passing-callbacks-down

const TodosDispatch = React.createContext(null);

function TodosApp() {
  // Note: `dispatch` won't change between re-renders
  const [todos, dispatch] = useReducer(todosReducer);

  return (
    <TodosDispatch.Provider value={dispatch}>
      <DeepTree todos={todos} />
    </TodosDispatch.Provider>
  );
}

function DeepChild(props) {
  // If we want to perform an action, we can get dispatch from context.
  const dispatch = useContext(TodosDispatch);

  function handleClick() {
    dispatch({ type: 'add', text: 'hello' });
  }

  return (
    <button onClick={handleClick}>Add todo</button>
  );
}

但坦率地说,将一个函数传递几个组件也不是那么糟糕。

它使数据依赖关系更加明确并提高了可测试性,尽管它确实有点冗长。做你觉得更正确的事。您可以稍后(在这种情况下)很容易地更改您的方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

React卸载子组件的方式是什么?

在 React Native 中的组件之间传递数据

无需在子组件和父组件之间传递数据的情况下,我的“获取”请求应放在我的React应用程序中的什么位置?

在React组件之间传递数据

在 Ionic React 中存储 HTTP 响应的最佳方式是什么?

以这种方式将数据传递到React中的属性之间有什么区别?

在React中将状态和回调从根组件传递到叶组件的最佳实践是什么?

在React Native中的两个组件之间传递数据

如何在React中的同级组件之间传递数据?

在React组件和服务之间进行通信的最佳实践是什么?

在组件React-JS之间传递数据

React & Formik,在组件之间传递数据

将对象的简写形式传递给React组件的方式是什么?

在React组件之间使用自定义api客户端的惯用方式是什么?

在原子组件之间传递元素/引用的规范React-Redux方法是什么?

在 2 个 React 组件之间传递单个值的最简单方法是什么?

在 React/Typescript 中的父组件和子组件之间传递状态

在Reactjs中的组件之间进行交互的最佳方式是什么?

React:使用App.js中的Router在组件之间传递数据(父组件)

在 React 应用程序中显示多个静态图像的最佳方式是什么?

在React父组件和子组件中useEffect的正确执行顺序是什么?

我可以以编程方式将 prop 传递给 react 中的子组件吗?

React中动态选项卡的最佳组件结构是什么?

React + Redux-在表单组件中处理CRUD的最佳方法是什么?

在React类组件中更改URL onClick或onSubmit的最佳方法是什么?

传递React组件的最佳方法?

封装 React 应用程序的最佳方式是什么?

React app 添加大文本块的最佳方式是什么

-React Native,状态数据从A.js传递到B.js的方式是什么