Reactjs React Native:调用props.affunction和带括号的props.affunction()有什么区别?

Reactjs React Native:调用props.affunction和带括号的props.affunction()有什么区别?,reactjs,react-native,Reactjs,React Native,此TouchableOpacity组件:从其父函数中获取道具,在该代码中,当调用函数goToDetails时,我的代码仅在使用括号时起作用并显示正确的结果,而有时我仅在类中使用函数名称时,代码在没有括号的情况下运行良好:onPress={this.goToDetails}。 这是完整的代码 在课堂上: render(){ return ( <View> <MovieList results ={this.state.searchResults} goToDe

TouchableOpacity
组件:
从其父函数中获取道具,在该代码中,当调用函数
goToDetails
时,我的代码仅在使用括号时起作用并显示正确的结果,而有时我仅在类中使用函数名称时,代码在没有括号的情况下运行良好:
onPress={this.goToDetails}
。 这是完整的代码

在课堂上:

render(){
  return (
   <View>
     <MovieList results ={this.state.searchResults} goToDetails={()=>this.goToDetails} /> 
   </View>
)}

goToDetails=()=>{
    this.props.navigation.navigate('Details')
  }
render(){
返回(
this.goToDetails}/>
)}
goToDetails=()=>{
this.props.navigation.navigate('Details'))
}
独立功能:

const MovieList = props =>{
const renderItem = ({item}) =>(
    <TouchableOpacity onPress={props.goToDetails()}>
        <Image source={{uri:`http://img.omdbapi.com/?apikey=&`}} style={{height:200, width:200}} />
        <Text>Title: {item.Title}</Text>
    </TouchableOpacity>)

return (<FlatList style={{flex:1}} renderItem={renderItem} data={props.results}  />) }
const MovieList=props=>{
常量renderItem=({item})=>(
标题:{item.Title}
)
return()}
更新:
调用MovieList的类,您传递的TouhcableOpacity
goToDetails
回调不一致

当您
goToDetails={()=>this.goToDetails}
这是一个返回函数的回调,因此在
Movielist
中,当它作为
onPress={props.goToDetails()}
附加到处理程序时,需要立即调用它,以获取返回的函数,以便再次具有
onPress={callbackbon}的签名
onPress={e=>callbackbon(e)}

render(){
  return (
   <View>
     <MovieList
       results={this.state.searchResults}
       goToDetails={this.goToDetails} /> // Pass callback as reference
   </View>
)}

goToDetails=()=>{
  this.props.navigation.navigate('Details')
}
render(){
返回(
//将回调作为引用传递
)}
goToDetails=()=>{
this.props.navigation.navigate('Details'))
}
电影演员

const MovieList = ({ goToDetails }) =>{
  const renderItem = ({ item }) =>(
    <TouchableOpacity onPress={goToDetails}> // Attach callback to event handler
      <Image
        source={{ uri:`http://img.omdbapi.com/?apikey=&` }}
        style={{ height:200, width:200 }}
      />
      <Text>Title: {item.Title}</Text>
    </TouchableOpacity>
  );

  return (
    <FlatList
      style={{ flex:1 }}
      renderItem={renderItem}
      data={props.results}
    />
  );
}
const MovieList=({goToDetails})=>{
常量renderItem=({item})=>(
//将回调附加到事件处理程序
标题:{item.Title}
);
返回(
);
}

@larz是的,
TouchableOpacity
代码在上面的MovieList函数中,该函数不在调用
的类中,如果这可能是reason@larz如果您想查看
TouchableOpacity
的代码,它位于react本机源代码中:Eiman,你能更新你的问题,包括你在哪里渲染
MovieList
和传递
goToDetails
道具,让我们看看你是如何传递它的吗?@larz我在上面添加了我代码的链接