当前位置: 首页 > 知识库问答 >
问题:

如何在react中传递方法作为元素的道具

谢高峯
2023-03-14

当我想将函数传递到react中的函数组件中时,我遇到了一个错误。问题出在哪里?

import React, { Component } from 'react';
import Person from './Person/Person';

import './App.css';

class App extends Component {
  state = {
    person: [
      { namd: "Ehsan", age: 36 },
      { name: "Mosen", age: 48 }
    ]
  }

  swichNameHandler = (newName) => {
    this.setState({
      person: [
        { name: newName, age: 37 },
        { name: "Mohsen", age: 49 }
      ]
    })
  }
  render() {
    return (
      <div className="App">
        <h1>this is react</h1>
        <button onClick={this.swichNameHandler.bind(this, "ehsan")}>Click Here</button>
        <Person
          name={this.state.person[0].name}
          age={this.state.person[0].age}
          click={this.swichNameHandler} />
        <Person
          name={this.state.person[1].name}
          age={this.state.person[1].age}
          click={this.swichNameHandler}> he is my brother.</Person>
      </div>
    );
  }
}

导出默认应用程序;

import React from 'react';

//Create a new Component
const person = (props) => {
    return (
        <div>
            <p onClick={props.click}> My name is {props.name} and I am {props.age} years old.</p>
            <p>{props.children}</p>
        </div>
    )
}

export default person; 

这是我点击p元素时出现的错误:

React-dom.development.js:57未捕获错误:对象作为React子级无效(找到:具有键{dispatchConfig,_TargetInst,_DispatchListeners,_DispatchInstances,nativeEvent,type,target,currentTarget,eventPhase,bubbles,cancelable,timeStamp,defaultPrevented,isTrusted,view,detail,screenX,screenY,clientX,clientY,pageX,metaKey,ctrlKey,shiftKey,altKey,

如果要呈现子级集合,请改用数组

共有1个答案

穆鸿波
2023-03-14

我认为您的状态中有错误,其中Person[0]应该是“name”,但您写了“namd”,这导致Person[0].name未定义,因此抛出错误

 state = {
    person: [
      { namd: "Ehsan", age: 36 },
      { name: "Mosen", age: 48 }
    ]
  }

应该是

 state = {
    person: [
      { name: "Ehsan", age: 36 },
      { name: "Mosen", age: 48 }
    ]
  }
 类似资料:
  • 我使用的是dev-express中的react-grid库,库中有一个表组件,我们可以向它传递单元格组件,在CustomCell中,我使用的是Material UI中的菜单 在上述情况下,菜单工作良好, 但是我想要传递道具到这个组件,我尝试了以下操作 在这种情况下菜单不工作,我想知道是否有一个替代的方法来实现第二种情况。

  • 我正在使用react语义ui模态对象。打开模态的对象是一个道具。 我想在另一个组件中嵌入模态: 如何传递JSX代码(

  • 问题内容: 可以说我有: 在Tabs组件内部,具有属性 儿童[0](this.props.children)看起来像 儿童[0]。道具看起来像 最终,Children对象看起来像(这是我想要传递的): 问题是这样,如果我这样重写MultiTab 在选项卡组件内部 看起来和上面一样。 好像 我希望该物业看起来像。上面只是打印出Statement函数。 这是一个很奇怪的问题,但是长话短说,我正在使用一

  • 问题内容: 我希望能够通过HTML标签传递文本,如下所示: 但是在的render方法中,当我打印出时,它实际上打印出了所有内容: 有什么方法可以使React解析HTML并将其正确转储吗? 问题答案: 您可以将混合数组与字符串和JSX元素一起使用(请参阅此处的文档): 这里有一个小提琴显示了它的工作 原理: http //jsfiddle.net/7s7dee6L/ 另外,作为最后的选择,您始终可以

  • 问题内容: 我正在用react-router进行反应。我正在尝试在react-router的“链接”中传递属性 “链接”呈现页面,但不将属性传递给新视图。下面是查看代码 如何使用“链接”传递数据? 问题答案: 此行缺失: 应该: 鉴于以下情况 (过时的v1) : 自v4起最新 : 并在组件中: 从您在文档上发布的链接,朝页面底部: 给定一条路线 使用一些存根查询示例更新了代码示例: 参见:http

  • 我对反应和试图理解如何传递道具很陌生。 首先,我设置了一个Navlink组件,该组件包含子类别属性: ,,都是从json文件中获取的,所以这部分是可以的。 每条路线的定义如下: 所以它呈现一个名为