You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native中如何从导入的子组件内调用父组件的自定义函数?

解决方案

你可以通过props传递回调函数的方式实现子组件调用父组件方法,只需要修改两处代码即可:

步骤1:修改父组件,将目标函数作为props传递给子组件

在父组件的CardheaderSlider标签上新增自定义属性,把test函数传进去:

export default function Home(props) {
    function test(){
        alert("asd")
    }

    // 补充原代码遗漏的return语句
    return (
        <>
            <CardheaderSlider name="All" onSliderClick={test} />
            <CardheaderSlider name="English" onSliderClick={test} />
            <CardheaderSlider name="Mathematics" onSliderClick={test} />
            <CardheaderSlider name="Science" onSliderClick={test} />
            <CardheaderSlider name="Languages" onSliderClick={test} />
            <CardheaderSlider name="Activity Books" onSliderClick={test} />
            <CardheaderSlider name="E-Training" onSliderClick={test} />
        </>
    )
}

这里我们把父组件的test函数命名为onSliderClick属性传给子组件,属性名可根据需求自定义。

步骤2:修改子组件,触发父组件传入的回调函数

在子组件的Pressable的onPress事件中调用父组件传过来的函数即可:

export default class CardheaderSlider extends React.Component {
    render() {
        return (
            <Pressable 
                style={styles.button}
                onPress={() => this.props.onSliderClick()}
            >
                <Text style={{ color: "#fff", fontWeight: "bold" }}>{this.props.name}</Text>
            </Pressable>
        )
    }
}

如果需要把当前按钮的名称等参数回传给父组件的test函数,直接在调用时传参即可:

  • 子组件修改为:
onPress={() => this.props.onSliderClick(this.props.name)}
  • 父组件的test函数对应修改为接收参数:
function test(name){
    alert(`当前点击的分类是:${name}`)
}

内容的提问来源于stack exchange,提问作者keerthiseelan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 02:06:03