Javascript 作为类对象传递给函数的字符串变量
在我的react原生应用程序中,我有一个字典,我使用Javascript 作为类对象传递给函数的字符串变量,javascript,react-native,Javascript,React Native,在我的react原生应用程序中,我有一个字典,我使用this.setState({keys:Object.keys(dict)})将其中的键存储在一个数组中。我尝试迭代并呈现这些键,单击这些键时,将键名传递给函数,如下所示: this.state.keys.map((key, index) => { return ( <View key={index}> <TouchableOpacity onPress={key => this.doSom
this.setState({keys:Object.keys(dict)})
将其中的键存储在一个数组中。我尝试迭代并呈现这些键,单击这些键时,将键名传递给函数,如下所示:
this.state.keys.map((key, index) => {
return (
<View key={index}>
<TouchableOpacity onPress={key => this.doSomething(key)}>
<View>
<Text>{key}</Text>
</View>
</TouchableOpacity>
</View>
)
为什么字符串作为类对象传递给onPress函数?React将事件作为第一个参数传递给函数。当您编写
{key=>
时,您正在创建一个名为key
的新变量,它实际上是事件,而不是预期的字符串。您可以只放空括号(或将参数命名为key
以外的任何名称),它应该按照您的预期工作。例如:
onPress={()=>this.doSomething(key)}`
React将事件作为第一个参数传递给函数。当您编写{key=>
时,您正在创建一个名为key
的新变量,该变量实际上是事件,而不是预期的字符串。您可以只放置空括号(或将参数命名为key
以外的任何名称)它应该按照您的预期工作。例如:
onPress={()=>this.doSomething(key)}`
此按键按下是一个合成事件,您应该为evt重命名,然后传递空括号,然后正常执行其余操作此按键按下是一个合成事件,您应该为evt重命名,然后传递空括号,然后正常执行其余操作
Class {
"_dispatchInstances": null,
"_dispatchListeners": null,
"_targetInst": FiberNode {
"tag": 5,
"key": null,
"type": "RCTView",
},
"bubbles": undefined,
"cancelable": undefined,
"currentTarget": null,
"defaultPrevented": undefined,
"dispatchConfig": Object {
"dependencies": Array [],
"registrationName": "onResponderGrant",
},
"eventPhase": undefined,
"isDefaultPrevented": [Function functionThatReturnsFalse],
"isPersistent": [Function functionThatReturnsTrue],
"isPropagationStopped": [Function functionThatReturnsFalse],
"isTrusted": undefined,
"nativeEvent": Object {
"changedTouches": Array [
[Circular],
],
"identifier": 0,
"locationX": 4.013671875,
"locationY": 11.8740234375,
"pageX": 169.013671875,
"pageY": 275.8740234375,
"target": 207,
"timestamp": 30722773,
"touches": Array [
[Circular],
],
},
"target": 207,
"timeStamp": 1586871822926,
"touchHistory": Object {
"indexOfSingleActiveTouch": 0,
"mostRecentTimeStamp": 30722855,
"numberActiveTouches": 0,
"touchBank": Array [
Object {
"currentPageX": 169.1015625,
"currentPageY": 277.138671875,
"currentTimeStamp": 30722855,
"previousPageX": 169.1015625,
"previousPageY": 277.138671875,
"previousTimeStamp": 30722853,
"startPageX": 169.013671875,
"startPageY": 275.8740234375,
"startTimeStamp": 30722773,
"touchActive": false,
},
],
},
"type": undefined,
},