React Native - 在 WebView 中设置 localStorage

2024-01-10

我想在加载页面之前在 WebView 组件中设置 localStorage。

https://facebook.github.io/react-native/docs/webview https://facebook.github.io/react-native/docs/webview

我的用例是我的 RN 应用程序想要在其随附的网站上打开一个页面。网站通过检查 localStorage 中的令牌来在加载时进行身份验证。如果令牌不存在,系统将提示他们登录。由于用户已经登录了应用程序,如果他们可以避免在 WebView 中再次登录,我会更喜欢它。


您可能已经克服了这个问题。如果不是,这是我的解决方案。

您可以使用injectedJavaScript的财产WebView并添加 javascript 代码以在页面加载时添加令牌。

示例代码片段。

  1. 我需要注入的自定义 Javascript 代码。
let myInjectedJs = `(function(){ let tk = window.localStorage.getItem('tokenKey');
      if(!tk || (tk && tk != '${token}')){
        window.localStorage.setItem('tokenKey', '${token}');
        window.location.reload();
      }
    })();`;

代码说明

函数在加载后立即被调用。检查是否tokenKey已设置。如果未设置,我们会将其设置为新令牌${token}并重新加载页面。

注意:我们需要将函数作为字符串传递给injectedJavaScript在网络视图中。

  1. Using myInjectedJs在 Web 视图中。
<WebView
    ref={webView => { this.refWeb = webView; }}
    javaScriptEnabled={true}
    injectedJavaScript={myInjectedJs}
    ...

希望这能解决您的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React Native - 在 WebView 中设置 localStorage 的相关文章

  • 按 T​​ab 键可关闭从子菜单打开的 Material UI 对话框

    我需要创建一个菜单栏 其中包含许多带有子菜单的菜单 当我从顶级菜单项打开对话框时 一切都会按预期 预期进行 但是当我从子菜单打开对话框时 按 Tab 键会关闭该对话框 我尝试了几种不同的方法来实现嵌套菜单 并选择了此处讨论的方法 https
  • 使用 Apollo-Client 对 GitHub API v4 进行身份验证

    与之前的版本一样 GitHub 的新 GraphQL API 需要使用令牌进行身份验证 那么 我们如何添加一个 Header 信息到HttpLink里面Apollo Client const client new ApolloClient
  • React router - 将路由上的 props 传递给子组件

    有人可以告诉我最好的方法吗 我想将页面标题道具从我的路线传递到我的标题子组件中 这是我的路线 var sampleApp React createClass render function return div div
  • react-hook-form:检查未保存的更改

    我有一个由以下人员控制的预填写表格react hook form https react hook form com const control handleSubmit formState setValue reset useForm
  • React Native 中文本的图像识别

    这可能是一个疯狂的问题 但我已经看到应用程序完成了 是否有任何类型的 API 可用于识别图像中的文本 Chase 识别支票上的数字的方式 或者是否有一个 API 可用于搜索 比如谷歌 基于图像的信息 例如 如果我拍了一张企业徽标的照片 谷歌
  • 生成日期并将新属性添加到对象数组中

    我无法控制数据列表 但我需要将其映射到日期范围数据 数据列表如下所示 只有 from 和 to date from 2017 05 06 00 00 00 date to 2017 05 08 23 59 59 state name San
  • “ReactNode”不是有效的 JSX 元素

    我有以下代码 代码沙箱 https codesandbox io s react typescript forked 50beyp file src App tsx import ComponentType ReactNode from r
  • 如何在rails中使用npm包?

    我正在尝试使用王牌编辑 https github com ajaxorg ace在我的 Ruby on Rails 应用程序中 大部分视图由 React 组件组成 我正在使用反应轨道宝石 https github com reactjs r
  • 将 redux 数据保存为 state 中的对象数组,如果 state 有先前的状态可用,则更新状态

    我收到的回复如下格式示例 const response data name abc age 10 id 10 name def age 15 id 20 name abc 我想将其保存在我的 redux 状态中 如果 response na
  • 添加 CSS 来响应创建的元素,例如 data-reactroot

    在我的根div下 react 自动 创建另一个div 有没有办法向该 div 添加一个类 我需要添加 height 100 来防止背景内容在显示覆盖层时在移动设备中滚动 这就是我检查网站上的元素时显示的方式 单击按钮时 我需要将 heigh
  • 具有两组子组件的 React 组件

    我正在创建一个组件 需要接收两组子组件并放置在组件的两个不同部分中 let CreditCardForm icons fields gt div div div div icons div div div fields div let Cr
  • React 不响应按键事件

    我正在尝试实现一些非常基本的按键检测 但我根本无法让它工作 我有一个裸露的组件 应该在onKeyDown事件 但控制台中没有任何内容被注销 class App extends React Component constructor prop
  • 无法解析模块@react-native-async-storage/async-storage

    将 aws amplify 添加到项目后出现此错误 根据文档完成了 aws amplify 的设置 然后 pod install 和 react native run ios 我也尝试过更改下面错误建议中提到的导入语句 但仍然不起作用 提前
  • 刷新或直接点击链接时找不到 React.js 页面

    我在此链接上有一个反应项目 https notchy cross 000webhostapp com https notchy cross 000webhostapp com 如果向下滚动 您会看到一个名为 产品类别 的部分 https i
  • 想要动态处理与分页相关的页码显示:ReactJS

    我有一些分页逻辑工作得很好 唯一的问题是我只能让它显示并固定数量的页面可供选择 现在我已经把它放到了 5 页 但我希望它能够根据总记录动态更改 假设我有 100 条记录 每页限制为 10 条 将有 10 页 现在我只能让它以这种方式显示 第
  • 在 React 应用程序的 shell 脚本中设置环境变量

    我正在尝试在 powershell 和 bash 脚本中设置一些环境变量 并在 ReactJS 应用程序中读取它们 shell脚本很简单 env AUTHDOMAIN some domain com env AUTHCLIENTID bun
  • ReactTransitionGroup 不适用于 React-redux 连接组件

    我正在开发一个更大的项目 但我创建了这个简短的示例来说明问题 如果我使用Box组件 它的工作原理 它在控制台中输出componentWillEnter and componentWillLeave当我们点击按钮时 如果我使用BoxConta
  • 使用 gradlew assembleRelease 从 React Native 创建发布 apk 时出现错误

    我想发布 apk 但我收到错误 文件已存在 mkdir D mobile 它在 d 驱动器中生成名为 mobile 的文件 删除文件后 再次执行 gradlew assembleRelease 创建该文件并抛出错误 任务 app bundl
  • React autoFocus 将光标设置为输入值的开头

    我有一个受控输入 最初显示一个值 我已将该输入设置为自动聚焦 但当我希望它出现在末尾时 光标出现在输入的开头 我知道这可能是因为自动对焦是在值之前添加的 但我不能 100 确定 在输入字段末尾完成光标初始化的最佳方法是什么 var Test
  • React Router v4 不渲染组件

    React Router v4 渲染组件存在问题 在应用程序初始加载时 它将呈现与 URL 相对应的正确组件 但是 任何后续的组件Link单击不会呈现所需的组件 图书馆 反应路由器 4 2 2 https reacttraining com

随机推荐