gpt4 book ai didi

android - react-native 中 ListView 中的简单转到页面

转载 作者:可可西里 更新时间:2023-11-01 11:42:57 24 4
gpt4 key购买 nike

如何从 ListView 单击一行并访问该内容。

我已将所有内容包装在导航器中。

renderScene(route, navigator) {
var routeId = route.id;
if (routeId === 'SplashPage') {
return (
<SplashPage
navigator={navigator} />
);
}
if (routeId === 'App') {
return (
<App
navigator={navigator} />
);
}
}

很简单,但是当我在应用程序页面中呈现 ListView 时,我似乎无法获得要传递 Prop 的行的正确上下文。

render() {
return (
<Navigator
renderScene={this.renderScene.bind(this)}
navigator={this.props.navigator}/>
);
}


renderScene(route, navigator) {
render(
// If I run this.profilePage() from here, it works
<ListView
dataSource={this.state.feed}
renderRow={this._renderRow} // need to pass the navigator here somehow?
/>
);
}

_renderRow(feeditem){
return (
<TouchableOpacity
onPress={this.profilePage}><Text>Test to click</Text>
// Also tried {this.profilePage.bind(this)} - didnt work
</TouchableOpacity>
)
}

profilePage(){
this.props.navigator.push({
id: 'ProfilePage',
name: 'Profile',
});
//'this' however is always null
}

如何正确地将导航器上下文传递给 Row?还是我做错了?

最佳答案

尝试这样的事情。将 Navigator 分解成它自己的组件,这将更容易推理 imo。

导航组件:

var Nav = React.createClass({

renderScene(route, navigator) {
var routeId = route.id;
if (routeId === 'SplashPage') {
return ( <SplashPage navigator={navigator} /> );
}
// MORE ROUTES BELOW
}

render() {
return (
<Navigator
initialRoute={{ id: 0, component: List, name: 'List' }}
renderScene={this.renderScene.bind(this)}
navigator={navigator} />
);
}

})

列表组件:

var List = React.createClass({

_renderRow(feeditem){
return (
<TouchableOpacity
onPress={ () => this.profilePage() }><Text>Test to click</Text>
</TouchableOpacity>
)
}

profilePage(){
this.props.navigator.push({
id: 'ProfilePage',
name: 'Profile',
});
}

render() {
return (
<ListView
dataSource={this.state.feed}
renderRow={this._renderRow}
/>
)
}
})

关于android - react-native 中 ListView 中的简单转到页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35465021/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com