Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从组件传递属性';将prop方法转换为处理程序?_Javascript_React Native - Fatal编程技术网

Javascript 如何从组件传递属性';将prop方法转换为处理程序?

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 {

我不熟悉react-native和JavaScript,因此我不知道下面的方法如何从react-native项目中的组件接收“attrs”:

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}
      >
    ))