父组件向子组件传递函数异常:子组件接收的函数为空对象
问题解决:React子组件无法正确接收父组件传递的函数
你的核心问题是React函数组件的props接收方式错误:
React函数组件的所有props都会被打包成单个对象作为第一个参数传入,而非分开的多个独立参数。你当前的写法中:
export const VaultEntry = (contactInfo, runServerless) => { console.log(runServerless) }
- 第一个参数
contactInfo其实是包含contactInfo和runServerless两个属性的完整props对象 - 第二个参数
runServerless因无对应传入值,实际为undefined(你看到的空对象是环境相关的异常表现)
修正方法
有两种正确的接收方式:
方式1:解构props对象(推荐)
直接从props对象中解构出需要的属性:
export const VaultEntry = ({ contactInfo, runServerless }) => { console.log(runServerless); // 此处可正常调用父组件传递的函数 };
方式2:接收完整props对象后访问属性
若需使用多个props,可先接收完整props对象,再通过点语法访问属性:
export const VaultEntry = (props) => { console.log(props.runServerless); // 使用props.contactInfo获取另一个传入属性 };
额外说明
父组件中typeof(runServerless)显示为array,建议确认Provider提供的runServerless是否被包装在数组中(比如使用useState或其他状态管理的数组返回形式)。如果是,需先从数组中取出函数再传递给子组件,示例:
// 假设runServerless是数组,比如const [runServerless] = useContext(...) <VaultEntry contactInfo={userData} runServerless={runServerless[0]}/>
内容的提问来源于stack exchange,提问作者sylargaf
相关产品推荐
相关产品推荐

