我如何隐藏WebView,直到网站完成登录?(本机)反应
How can I hide the WebView until the website's finished logining? [react native]
我试图使一个组件显示一个网站与WebView
,然后自动填写用户信息登录。我照顾自动填充部分注入一些javascript与injectedJavascipt
道具的WebView
。
但事情是我想隐藏WebView
(登录页面),显示加载屏幕,只有在用户登录到网站时才显示它。由于我无法以任何方式与网站交互,我的解决方法是将WebView
的flex
prop设置为0,当登录完成时,使用setNativeProps()
将其设置为1。
有没有办法让我知道什么时候网站已经完成登录,这样我就可以显示WebView
?如果没有,有没有其他的方法来隐藏我的WebView
和显示它时,该网站完成登录?
tl;dr:基本上我希望我的WebView
在后台加载一些东西,而一些加载屏幕显示,并在这些事情完成时向我发出信号
Hacky,但也许你可以检查URL时,用户完全登录,然后改变flex属性?
navChanged(navState) {
if(navState.url.match(loggedInURL){
//set flex to 1
};
}
<WebView
source={{uri: this.state.url}}
onNavigationStateChange={this.navChanged}
startInLoadingState={true}
renderLoading={
()=> {
return (<ActivityIndicator /> )
}
}
/>
我自己没有尝试过,但我认为下面的东西应该做你想要的。WebView有加载相关的道具,如onLoad
, onLoadStart
, onLoadEnd
, onError
等。在这些文件中,你可以更新组件的状态。当你调用this.setState
时,组件的render()
将再次被触发,并且基于当前状态,它将呈现你告诉它的视图。
class MyComponent extends Component {
constructor(props){
super(props)
this.state={
isLoading:false
}
}
render() {
if (this.state.isLoading) {
return <Spinner visible={true}/>
} else
return <WebView onLoadStart={() => this.setState({isLoading:true})} onLoadEnd={() => this.setState({isLoading:false})}/>
}
}
}
相关文章:
- 如何识别我的网站中的慢速设备
- 对iPad上的点击事件反应缓慢
- 用Javascript更改我网站上的字体大小
- 有任何可能将facebook实时信使整合到一个网站中
- 将电视直播频道从网站嵌入我的网站
- Windows 8固定的网站互动程序
- 门户网站:当地时间有多有用
- 反应路由器弄乱了请求网址
- 正在删除node.js中已验证的网站
- 为什么在这个网站上不能通过JS访问元素
- 需要使用谷歌应用程序脚本列出谷歌域下的所有网站
- 为什么只有工厂在棱角分明的网站上被提及
- 从应用程序脚本检查谷歌网站访问权限
- 使用谷歌网站翻译器自动翻译网页
- 使用node.js制作网站
- 谷歌如何确定网站加载时间
- 带有url的单页网站导航
- 实现已验证用户更新状态的最佳方式,作为对系统中已更改状态的反应.(ASP.NET MVC网站)
- 我如何隐藏WebView,直到网站完成登录?(本机)反应
- 对多页面网站进行反应