Javascript 使用由道具传递且与给定事件不关联的函数作为单击

Javascript 使用由道具传递且与给定事件不关联的函数作为单击,javascript,reactjs,react-native,react-props,Javascript,Reactjs,React Native,React Props,早上好,社区,我有个问题。我正在使用react js,我必须通过道具将函数传递给子组件。问题是,这个函数不会直接与单击关联,但我必须使用它,但在子组件中应用一些逻辑,如果条件满足,则通过道具启动所述函数。我所说的可以完成吗?或者说,经过自身的函数必须与箭头函数和给定事件相关联吗 export default father extends Component{ const fun = () => { console.log("hello") } render

早上好,社区,我有个问题。我正在使用react js,我必须通过道具将函数传递给子组件。问题是,这个函数不会直接与单击关联,但我必须使用它,但在子组件中应用一些逻辑,如果条件满足,则通过道具启动所述函数。我所说的可以完成吗?或者说,经过自身的函数必须与箭头函数和给定事件相关联吗

export default father extends Component{
    const fun = () => {
      console.log("hello")
    }

  render(){
   return(
    <Child fun = {this.fun} />
   )
  }

export default child extends Component{
    this.state = {
        count : 1
    }
    const thing = () => {
        const { count } = this.state
        if(count == 1){
            this.props.fun
        }else{
            console.log("is not 1")
        }
    }
    render(){
      return(
        <Button onPress = {() => this.thing()} />
     )
   }
}
导出默认组件{
康斯特乐趣=()=>{
log(“你好”)
}
render(){
返回(
)
}
导出默认子扩展组件{
此.state={
计数:1
}
const thing=()=>{
const{count}=this.state
如果(计数=1){
这很有趣
}否则{
console.log(“不是1”)
}
}
render(){
返回(
this.thing()}/>
)
}
}

这是一个非常糟糕的例子,但它与我想做的事情类似

是的,你写的东西可以做到。作为道具传递的函数可以作为事件处理程序有条件地执行,也可以根本不执行。一旦你把它作为道具传递出去,你就完全可以决定如何使用它。

你试过吗?当你向下传递一个函数时,它就像其他对象一样向下传递。在props中传递的函数必须是事件处理程序,这并没有特殊要求。你可以随意调用它。显示一些代码,你到目前为止做了什么?我怎么知道,你做错了什么?你需要确保调用
this.props.fun()中的函数
this.props.fun()
,否则什么都不会发生。我如何确保给她打电话,请原谅这个愚蠢的问题
this.props.fun
不是你如何调用函数。那只是。。。获取变量的值,该变量是对函数的引用,然后对其不做任何操作。要调用函数,请在函数后面加上
()
(括号内可能有参数)。所以
this.props.fun()
是您想要的,而不是
this.props.fun
。我想也许你应该退一步,在深入研究React之前,先了解一下纯JavaScript。@ivanzapata示例在哪里?我刚刚把它添加到问题中是的,我的意思是语法到处都是,但是是的,这会起作用。这与我拥有的类似,但我不会在子组件中抛出函数。。。我检查道具和子组件中的函数是否存在,但如果以示例中的方式使用它,则不会有任何妥协。然而,当我在按下按钮时立即使用它,如果它有效…@ivanzapata你能仔细检查你的评论吗?我不太明白你的意思,对不起!请注意,您需要通过如下方式添加
()
调用
this.props.fun
this.props.fun()