React中通过地图函数传递道具

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React中通过地图函数传递道具相关的知识,希望对你有一定的参考价值。

我知道如何在React中传递基本道具,但是我对此有些困惑。我认为,与其尝试在本段中解释所有这些问题,不如通过演示来更好地解决这个问题。

这是之前试图将其分解为自己单独的组件的方式。

    { <div className="flex-item-main">
         <ol>
            {this.state.thoughts.map((thought, index)=> 
                <DisplayPoem className='displayPoem' key={index} onClick={() => { this.handleDeleteClick(index) }} name='Delete Thoughts' value={thought} />
            )}
          </ol>
         </div> }

这里是从父级获取道具的独立组件的外观:

    { <div className="flex-item-main">
         <ol>
            {this.props.thoughtsProp.map((thought, index)=> 
                <DisplayPoem className='displayPoem' key={index} onClick={this.props.onClick} name={this.props.name} value={thought} />
            )}
          </ol>
         </div> }

这里是父组件传递的道具:我不知道该如何处理onClick={() => { this.handleDeleteClick(index) }},因为我需要组件中index函数中的.map()。我希望所有这些都有意义,并且我很乐意添加更新,我不确定如何解释该问题,这可能就是为什么我无法解决该问题。还是React的新手。

         <DisplayPoemList thoughtsProp={this.state.thoughts}  onClick={() => { this.handleDeleteClick(index) }} name='Delete Thoughts' />

答案

您可以从道具中移除箭头功能,并将方法作为道具传递给您。更改此代码(请查看onClick):

<DisplayPoemList thoughtsProp={this.state.thoughts}  onClick={() => { this.handleDeleteClick(index) }} name='Delete Thoughts' />

此代码:

<DisplayPoemList thoughtsProp={this.state.thoughts}  onClick={this.handleDeleteClick } name='Delete Thoughts' />

然后您的DisplayPoemList将获得一个函数onClick,该函数在调用时会期望index。使用箭头函数创建函数实例,并在每个元素的作用域中带有索引。

    { <div className="flex-item-main">
         <ol>
            {this.props.thoughtsProp.map((thought, index)=> 
                <DisplayPoem className='displayPoem' key={index} onClick={() => this.props.onClick(index)} name={this.props.name} value={thought} />
            )}
          </ol>
         </div> }

以上是关于React中通过地图函数传递道具的主要内容,如果未能解决你的问题,请参考以下文章

如何在 vuejs 中通过 <router-link /> 将道具传递给命名视图?

在VueJS 2中通过v-for中的道具将数据从父级传递给子级

React.js:将道具从函数传递到组件

如何在反应中通过道具导入图像并使用“导入”路径[重复]

使用路线渲染Google地图,如何传递路线道具?

使用 react 和 EmailJs 在表单中通过 onSubmit 传递第二个参数