将传递 onPress 的本机反应与值

Posted

技术标签:

【中文标题】将传递 onPress 的本机反应与值【英文标题】:react native passing onPress with value 【发布时间】:2021-05-30 15:59:18 【问题描述】:

我有一个父组件,它创建一个将“onPress”传递给父组件的子组件,

工作正常,但现在需要将一些值从子级传递给父级...

父组件:

const filterBarTapped = ( index:any )=> 
  console.log('tongo:', index )



const Charter = ( isSingle, isDarkMode, data1, data2 : Charterprops) => 

  return (
    <View>
       Object.keys(data1).length > 6 && <TabBar data=data1 onPress=() => filterBarTapped()/> ...

孩子:

const handleClick = (index:any) => 
    setSelectedTab(index)
    console.log("sale index:", index)
     onPress()



return (
        <View style=
            flexDirection: "row",
            justifyContent: 'space-around',
            alignItems: 'center',
        >


            tabs.map(p => (

                <Tab
                    title=p.title
                    onPress=() => handleClick(p.itemIndex)
                    itemIndex=p.itemIndex
                    selectedItem=selectedTab />
            ))

        </View>
    )

但我明白了,

汤戈:未定义

那么,如何将索引传递给我的 onPress 的父级?

干杯

【问题讨论】:

【参考方案1】:

您需要将值传递给 onPress 回调

孩子

onPress(index)

然后在过滤函数中更新它

onPress=(index) => filterBarTapped(index)

为了在filterBarTapped函数上可以访问

快捷方式:

由于onPressfilterBarTapped 的args 数量相同,您可以编写:

onPress=filterBarTapped

在父组件上

【讨论】:

【参考方案2】:

代替

filterBarTapped()/>

可以直接传递filterBarTapped函数

<TabBar data=data1 onPress=filterBarTapped/>

这样,从onPresss 事件传递的任何值都将可用于filterBarTapped 函数。并且代码变得更易于维护。

【讨论】:

以上是关于将传递 onPress 的本机反应与值的主要内容,如果未能解决你的问题,请参考以下文章

功能性反应本机组件中的onPress不起作用

将本机传递参数反应给其他组件

如何将值从反应本机应用程序传递到节点 js 后端

如何将值传递给正在加载反应本机应用程序的 Web 视图

我想从本机活动传递数据以使用 android 中的桥接来反应本机 js 文件

如何从 iOS 传递信息以在启动时做出本机反应?