除了这个之外,还有更好的方法可以从 React 中的 parent 组件调用 child 函数吗?
Is there a better way to call a child function from a parent component in React, other than this?
我试图从 React 中的 parent 组件调用 child 组件中的函数,但没有使用 refs,我成功了,但我不知道我的方法是否正确除了便宜的黑客之外的东西。有什么更好的方法可以做到这一点?
我也在阅读文档,但我可能错过了正确的方法。感谢任何资源建议和想法。
我的parent代码:
function Parent(props){
const [submitClicked, setSubmitClicked] = useState(false);
function onSubmitClick(e){
e.preventDefault();
setSubmitClicked(true);
}
return (
<Child
submitClicked={submitClicked}
setSubmitClicked={setSubmitClicked}
/>
);
}
Child代码:
function Child(props) {
useEffect(()=>{
if(props.submitClicked){
//do something in the child component...
props.setSubmitClicked(false);
}
});
}
将处理状态更新的处理程序(函数)从父组件传递到子组件。
const { useState } = React;
// Child receives the handler
// When the button is clicked call the handler
function Child({ handleSubmit }) {
return <button onClick={handleSubmit}>Click me</button>
}
function Parent() {
const [ submitClicked, setSubmitClicked ] = useState(0);
// The handler deals with the state update
function handleSubmit() {
setSubmitClicked(submitClicked + 1);
}
return (
<div>
<p>{submitClicked}</p>
<Child handleSubmit={handleSubmit} />
</div>
);
};
// Render it
ReactDOM.render(
<Parent />,
document.getElementById("react")
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.1/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.1/umd/react-dom.production.min.js"></script>
<div id="react"></div>
我试图从 React 中的 parent 组件调用 child 组件中的函数,但没有使用 refs,我成功了,但我不知道我的方法是否正确除了便宜的黑客之外的东西。有什么更好的方法可以做到这一点?
我也在阅读文档,但我可能错过了正确的方法。感谢任何资源建议和想法。
我的parent代码:
function Parent(props){
const [submitClicked, setSubmitClicked] = useState(false);
function onSubmitClick(e){
e.preventDefault();
setSubmitClicked(true);
}
return (
<Child
submitClicked={submitClicked}
setSubmitClicked={setSubmitClicked}
/>
);
}
Child代码:
function Child(props) {
useEffect(()=>{
if(props.submitClicked){
//do something in the child component...
props.setSubmitClicked(false);
}
});
}
将处理状态更新的处理程序(函数)从父组件传递到子组件。
const { useState } = React;
// Child receives the handler
// When the button is clicked call the handler
function Child({ handleSubmit }) {
return <button onClick={handleSubmit}>Click me</button>
}
function Parent() {
const [ submitClicked, setSubmitClicked ] = useState(0);
// The handler deals with the state update
function handleSubmit() {
setSubmitClicked(submitClicked + 1);
}
return (
<div>
<p>{submitClicked}</p>
<Child handleSubmit={handleSubmit} />
</div>
);
};
// Render it
ReactDOM.render(
<Parent />,
document.getElementById("react")
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.1/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.1/umd/react-dom.production.min.js"></script>
<div id="react"></div>