【发布时间】:2017-05-20 13:09:36
【问题描述】:
我在 React 中创建了两个组件,<Search /> 和 <List />,它们都是 <App /> 的子级。
当单击<Search /> 中的按钮时,我想从 API 中获取某些内容并在<List /> 中显示结果。虽然我通过在 <App /> 中进行 fetch 并将响应作为 prop 传递给 <List /> 来完成这项工作,但我更愿意将 fetch 封装在 <List /> 中。
不幸的是,我很难找到一种方法来做到这一点。 “React 方式”可能是通过一些巧妙的道具传递来做到这一点,但我还没有找到一种巧妙的方式来做到这一点——即使是“shouldFetch”布尔值也需要在 fetch 之后重置,这看起来很麻烦并且会触发不必要的渲染。
This answer 将 refs 用于类似的东西,这可能会起作用,但实际上我有点犹豫要不要尝试它,因为根据 React 文档,refs 似乎有点脏,因为他们“必须修改典型数据流之外的子节点”。
在单击<Search /> 中的按钮后,如何指示我的<List /> 组件执行某些操作?
如果需要,我可以提供代码——但希望这个问题比我想象的要简单。
【问题讨论】:
-
你在使用 Redux 吗?如果是这样,您可以从
<Search />发送一个操作 -
@OmriAharon 不幸的是,现在不是,简单的 React。
-
那么由于组件接收信息的唯一方式(在“React 方式”中)是状态/道具,你几乎涵盖了这两个选项。我会使用你必须工作的第一个选项。顺便说一句 -
<Search />似乎是调用此 API(或至少触发它)的绝佳场所,<List />应该对接收和显示数据感到非常满意。 -
第三种选择可能是获取
<Search />组件,然后使用您收到的数据调用<App />中的函数,然后将其传递给<List />,所以基本上<Search />代替<App />处理呼叫。
标签: reactjs