在下面的代码中,我希望 webView 内容在点击次数增加时不会改变,但每次加载时,都会显示一个新的时间戳。
const webView = (
<WebView
source={{
uri:
'data:text/html,<html><script>document.write("<h1 style=\\"font-size:64px\\">"+Date.now()+"<h1>");</script>',
}}
/>
);
export default class App extends React.Component {
state = {
clicks: 0,
};
onClick = () => {
this.setState({ clicks: this.state.clicks + 1 });
};
render() {
return (
<View>
<Text onPress={this.onClick}>
Click Me: {this.state.clicks}
</Text>
{this.state.clicks % 2 === 0 ? webView : null}
{this.state.clicks % 2 === 1 ? webView : null}
</View>
);
}
}
链接到博览会小吃以在设备上进行检查。
到目前为止,我已经阅读了 React 中关于问题的 reparenting ,使用 Portals 实现,并且还看到了一个关于在 react native 中支持 reparenting 的问题,但没有解决方案。
那么,如何在多个屏幕中重用组件实例而不在每个屏幕中创建它的新实例呢?
希望reparenting是答案,但找不到任何实现,所以如果reparenting是这个问题的答案,如何自己实现它?