reactjs - 来自 localStorage 的 react-native-webview getItem()
问题描述
在我的 react-native 应用程序中,我通过 react-native-webview 使用 webview。在此,我需要从 localStorage 中获取一个项目。我用注入的JavaScript = {myInjectedJs} 尝试过,但我没有得到任何回报。
我究竟做错了什么?
选项卡.tsx
export default function TabEnergy({navigation} : {navigation: any}) {
return <WebView
source={{ uri: DevUrls.BASE_URL_DEV }}
javaScriptEnabled={true}
domStorageEnabled={true}
injectedJavaScript={myInjectedJs}
/>;
}
let myInjectedJs = `(function(){
${`console.log('**', window.localStorage.getItem('authenticationObject')) `}
})();`
解决方案
您需要将onMessage={e => console.log(e.nativeEvent.data))
道具添加到WebView
组件。并通过调用将该信息发布回 ReactNativewindow.ReactNativeWebView.postMessage()
export default function TabEnergy({navigation} : {navigation: any}) {
const webviewRef = useRef();
const onSomeEvent = () => {
webviewRef.current.injectJavaScript(
`(function(){
window.ReactNativeWebView.postMessage(window.localStorage.getItem('authenticationObject'))
})();`
)
}
return (
<WebView
ref={webviewRef}
source={{ uri: DevUrls.BASE_URL_DEV }}
javaScriptEnabled={true}
domStorageEnabled={true}
injectedJavaScript={myInjectedJs}
onMessage={e => console.log(e.nativeEvent.data))
/>
);
}
let myInjectedJs = `(function(){
window.ReactNativeWebView.postMessage(window.localStorage.getItem('authenticationObject'))
})();`
推荐阅读
- python - 用python创建windows快捷方式到“程序文件”
- c++ - Azure 存储 CPP 和 VCPKG
- regex - 用 sed 在括号前加逗号
- python - 从 json 中获取特定数据并存储在 django 的表中
- swift - SwiftUI 中的 FetchRequest 包装值:EXC_BAD_INSTRUCTION
- http-headers - WSO2 序列:捕获传入请求的标头
- java - 给通过Spring Logback生成的java应用程序日志文件754个linux文件权限
- android - 房间。错误:多个字段具有相同的columnName
- memory-management - OpenCL 上下文间缓冲区别名
- mysql - 从条件中排除某些行