我需要使用React构建一个多页面表单,从用户那里收集一些数据。当用户提交这个表单时,我想向API发出一个post请求并传递数据。我发现this MUI模板,我想使用它。模板有一个窗体(父组件),有多个子页面(子组件)。由于我想将所有数据作为一个API请求的一部分发送,所以我的假设是表单(父组件)应该是发出请求的那个。我该怎么做才能让父组件知道用户传递给子组件的值,这样我就可以在请求中包含这些信息了?
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。
1条答案
按热度按时间stszievb1#
请注意,这通常是一个反模式。我建议看看suggested way来处理这个问题。
本地存储还可以帮助您防止用户在刷新页面时重新启动表单
也就是说,如果您在父级中定义state并使用props向下传递setState,则可以实现此行为。
有一个codesandbox如果你想interact with it。