reactjs - 如何设置子组件而不在父组件中渲染它?

标签 reactjs reactive-programming

我的父组件检索一个列表并将其扩展为表格。
我希望行单击 cb (onRowClick) 用父组件 props/state 中的一些数据填充另一个组件。
我知道这可以使用 redux 来完成。是否有另一种方法可以简单地设置子组件而不渲染它,然后在单击 cb 上设置其 Prop ?

点击 cb 目前看起来像这样:

onRowClick={(event) => {
    return <ChildComponent data={props.data.data[event.index]} />
  }}

这不会调用 ChildComponent render 函数,因为组件未连接。

最佳答案

如果你不想使用 redux,你可以使用简单的 props 来传递一个设置状态的函数,并将状态数据传递给其他组件。

const App = () => {
  const [apiData, setApiData] = useState([]);
  useEffect(() => {
    // fetch api here
    setApiData();
  })
  const [data, setData] = useState();
  return (
    <>
    <Component1 tableData={apiData} onRowClick={setdata} />
    <ChildComponent data={data}/>
    </>
  );
}

如果两个组件在树中相距较远,那么您可以使用 react 上下文在它们之间传递数据。

关于reactjs - 如何设置子组件而不在父组件中渲染它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56508837/

相关文章:

javascript - FP : Reflecting state in absence of actual state change?

java - 在使用存储库模式时,如何使用 Hibernate 响应式(Reactive) Panache 库在 Quarkus 3.0.0.RC2 中响应式(Reactive)列出具有不同参数的实体?

javascript - React-router 不变违规 : The root route must render a single element

reactjs - Mui 数据网格 Pro v4.单击全部显示/隐藏全部时,不会触发列可见性事件

javascript - 我可以只隐藏 antd Upload 组件中某些文件的删除图标吗

reactjs - 使用 React hooks usestate 将现有对象替换为另一个对象

java - 使用 RxJava (ReactiveX) 运行 Observable 需要多长时间?

node.js - Dockerized React 应用程序无法绑定(bind)到 Heroku 上的 $PORT

javascript - 创建逗号分隔对象列表的最短方法

jms - JMS 与响应式流有何不同?