我尝试了以下代码,但失败了,因此,这是我的父组件:
import React from 'react'
import ChildComponent from './ChildComponent';
const ParentComponent = (props) => {
//step 1
// const inputRef = React.createRef();
const buttonRef = React.useRef();
const focusHandler = () => {
alert("hi");
}
return (
<div>
{/* In parent, we generally pass reference to child which we dint do here, lets see if props children help here */}
{props.children}
<ChildComponent ref="buttonRef" />
</div>
)
}
export default ParentComponent;
这是我的子组件:
import React from 'react'
const ChildComponent = React.forwardRef((props, ref) => {
return (
<div>
<button onClick={ref.focusHandler}>Focus Input</button>
</div>
)
})
export default ChildComponent;
在子组件中单击上面的按钮,我希望调用父方法。如何才能做到这一点?编辑
只需将父组件中的ref
替换为focusHandler
,如下所示
<ChildComponent focusHandler={focusHandler} />
然后在ChildComponent
中,也删除ref
。
如果你想知道在这种情况下如何使用ref(即使这不是传递回调的推荐方式),你需要分配焦点处理程序
键,并使用ref与ref.current
,参考组件和道具文档。
const ParentComponent = () => {
const buttonRef = React.useRef({ focusHandler: () => alert("hi") });
return (
<div>
<ChildComponent ref={buttonRef} />
</div>
);
};
const ChildComponent = React.forwardRef((props, ref) => {
return (
<div>
<button onClick={ref.current.focusHandler}>Focus Input</button>
</div>
);
});
出现错误的原因是函数组件中的ref需要使用ref={buttonRef}
传递,而不是ref=“buttonRef”
。类组件可以使用字符串引用,但即使在那里也不推荐使用。
对于从父组件调用函数,您不需要使用ref来执行此操作。因此,如果这是使用ref的唯一原因,则可以删除ref。相反,将函数作为道具传递:
const ParentComponent = (props) => {
const focusHandler = () => {
alert("hi");
}
return (
<div>
<ChildComponent focusHandler={focusHandler} />
</div>
)
}
const ChildComponent = (props) => {
return (
<div>
<button onClick={props.focusHandler}>Focus Input</button>
</div>
)
}
问题内容: 我有一个父子组件,我想在子组件中调用父方法,如下所示: 这将返回错误消息: 如何在子组件中调用此父方法? 问题答案: 试试这个。将功能作为道具传递给子组件。
我需要在ReactJS中从父组件调用子组件方法。我试过使用裁判,但不能做到这一点。有没有人能提出任何解决方案。多谢了。
本文向大家介绍Vue父组件调用子组件事件方法,包括了Vue父组件调用子组件事件方法的使用技巧和注意事项,需要的朋友参考一下 Vue父组件向子组件传递事件/调用事件 不是传递数据(props)哦,适用于 Vue 2.0 方法一:子组件监听父组件发送的方法 方法二:父组件调用子组件方法 子组件: 父组件: 以上这篇Vue父组件调用子组件事件方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希
下面有一个子组件,我正在尝试更新父组件中的。我已经尝试了几个迭代,但没有运气。
我需要使用父组件中子组件内部的状态值。 组成部分: 这是父组件:
我已经创建了一个子组件,它有一个我想调用的方法。 当我调用这个方法时,它只触发行,它不会设置属性?? 下面是快速启动的Angular应用程序和我的更改。 家长 孩子 如何设置属性?