将函数传递给reactjs中的子组件

Posted

技术标签:

【中文标题】将函数传递给reactjs中的子组件【英文标题】:Passing a function to child component in reactjs 【发布时间】:2017-11-18 10:24:37 【问题描述】:

这是我正在尝试做的一个简化示例。我想要做的是通过 props 将函数传递给 React 的不同组件。我可以将文本传递给道具,并通过 <button onClick=popup> 直接调用该函数,但这不是我实验的目的。 onClick 不会触发该功能,并且在渲染时 console.log 中存在“未捕获”错误,这无济于事。

const Elem = (props) => 
  return (<div>
    <h1> hi props.name props.last phase two </h1>
    <button onClick=props.clickon> props.text </button>
      </div>
  );
;

function popup()  
  alert("It works!")


class App extends React.Component
  constructor(props) 
   super(props);
 
  render()return (<Elem name = 'paul' last='shreeman' clickon='popup' text='PushMe'/>
  )


ReactDOM.render(
<App />, document.getElementById('root'))

这里是 codepen 的链接:https://codepen.io/pkshreeman/pen/GENmaG?editors=0010

【问题讨论】:

【参考方案1】:

原因是,你没有传递function,你传递的是一个字符串,要传递一个function,你需要这样写:

clickon = popup

现在它将通过function popup,而不是string "popup"

完整代码:

class App extends React.Component
    constructor(props) 
       super(props);
    

    render()
         return (
             <Elem name='paul' last='shreeman' clickon=popup text='PushMe'/>
         )
    

查看工作代码:https://codepen.io/anon/pen/MobvqB?editors=0010

查看此答案以了解有关的含义的详细信息:

What do curly braces mean in JSX (React)?

【讨论】:

以上是关于将函数传递给reactjs中的子组件的主要内容,如果未能解决你的问题,请参考以下文章

如何将子函数的参数传递给父 reactjs

ReactJS - 如何将“全局”数据传递给深度嵌套的子组件?

将多个参数传递给后端 API reactjs

ReactJS V16如何将父函数传递给孙事件处理程序[重复]

如何将Match对象包含到ReactJs组件类中?

将 onclick 函数作为参数传递给 react/typescript 中的另一个组件