reactjs 如何在React中将数据从子组件传递到父组件?

6ie5vjzr  于 2023-04-29  发布在  React
关注(0)|答案(1)|浏览(176)

我需要使用React构建一个多页面表单,从用户那里收集一些数据。当用户提交这个表单时,我想向API发出一个post请求并传递数据。
我发现this MUI模板,我想使用它。模板有一个窗体(父组件),有多个子页面(子组件)。由于我想将所有数据作为一个API请求的一部分发送,所以我的假设是表单(父组件)应该是发出请求的那个。
我该怎么做才能让父组件知道用户传递给子组件的值,这样我就可以在请求中包含这些信息了?

stszievb

stszievb1#

请注意,这通常是一个反模式。我建议看看suggested way来处理这个问题。
本地存储还可以帮助您防止用户在刷新页面时重新启动表单
也就是说,如果您在父级中定义state并使用props向下传递setState,则可以实现此行为。

//in Parent.js
    import Child from "./Child"
    import { useState } from "react";
    
    export default function Parent() {
    
      const [data,setData] = useState('');
    
      const handleClick = (param) => {
        setData(param)
      }
    
      return (
        <div className="App">
          <h1>{data}</h1>
          <Child data={data} sendToParent={handleClick} />
        </div>
      );
    }
// in Child.js
    import { useState } from "react";
    
    export default function Child(props) {
      const { sendToParent } = props;
      const [count, setCount] = useState(0);
    
      return (
        <button
          onClick={() => {
            /* notice how strange this code looks, 
           we're basically trying to outsmart the rerender */
            setCount(count + 1);
            sendToParent(`Child clicked ${count + 1}`);
          }}
        >
          Click me
        </button>
      );
    }

有一个codesandbox如果你想interact with it

相关问题