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我在上面添加了我代码的链接