Javascript 如何从组件传递属性';将prop方法转换为处理程序?
我不熟悉react-native和JavaScript,因此我不知道下面的方法如何从react-native项目中的组件接收“attrs”:Javascript 如何从组件传递属性';将prop方法转换为处理程序?,javascript,react-native,Javascript,React Native,我不熟悉react-native和JavaScript,因此我不知道下面的方法如何从react-native项目中的组件接收“attrs”: handlerFsubmit = attrs => { const { timers } = this.state; this.setState({ timers: timers.map(timer => { if (timer.id === attrs.id) { const {
handlerFsubmit = attrs => {
const {
timers
} = this.state;
this.setState({
timers: timers.map(timer => {
if (timer.id === attrs.id) {
const {
title,
project
} = attrs;
}
return {
...timer,
title,
project,
};
return timer;
}),
});
};
在渲染中有:
timers.map((timer) => (
<EditableTimer
key={timer.id}
id={timer.id}
title={timer.title}
project={timer.project}
elapsed={timer.elapsed}
isRunning={timer.isRunning}
onFormSubmit={this.handleFormSubmit}
onRemovePress={this.handleRemovePress}
onStartPress={this.toggleTimer}
onStopPress={this.toggleTimer}>))
timers.map((计时器)=>(
))
所以我想知道attrs是如何接收其值的,以及attrs中有什么内容?您可以在
handlerFsubmit
方法中传递attr
,如下所示:
timers.map((timer) => (
<EditableTimer
key={timer.id}
id={timer.id}
title={timer.title}
project={timer.project}
elapsed={timer.elapsed}
isRunning={timer.isRunning}
onFormSubmit={() => this.handlerFsubmit(timer)} // pass the timer element here
onRemovePress={this.handleRemovePress}
onStartPress={this.toggleTimer}
onStopPress={this.toggleTimer}
>
))
timers.map((计时器)=>(
this.handlerFsubmit(timer)}//在此处传递timer元素
onRemovePress={this.handleRemovePress}
onStartPress={this.toggleTimer}
onStopPress={this.toggleTimer}
>
))
您也可以通过bind方法传递
timers.map((计时器)=>(
))
谢谢亲爱的Kishan。但我不明白这个变量的值是从哪里来的!attrs
是否等于editableTimer的道具?该组件的prop(onformsubmit
)未传递任何参数,但attrs
具有值!这些值在哪里来自?@mohsenzarrindel您可以看到我传递了timer
变量,该变量是映射元素值。因此,它是状态变量timers
的值之一。这就是kishan。我对你的代码没有问题。我想知道这一点(在我的问题中)。我想确切地理解它。我可以做你的代码,这是一个简单的方法。对不起,但我不能理解你想说什么。但是attrs
将包含计时器的一个值。在我的问题中:我们有onFormSubmit={this.handleFormSubmit}
而没有传递任何参数!我认为attrs是一个参数,但我看不到在函数调用中传递参数!(onFormSubmit={this.handleFormSubmit}
)。我对java脚本了解不多,也不能理解这种语法。
timers.map((timer) => (
<EditableTimer
key={timer.id}
id={timer.id}
title={timer.title}
project={timer.project}
elapsed={timer.elapsed}
isRunning={timer.isRunning}
onFormSubmit={this.handlerFsubmit.bind(null,timer)}
onRemovePress={this.handleRemovePress}
onStartPress={this.toggleTimer}
onStopPress={this.toggleTimer}
>
))