reactjs - 如何在本机反应中保存和获取数据到本地存储?
问题描述
首先我发布获取令牌,然后将响应保存在本地存储中,如何使用 react native 在本地存储中保存和检索令牌数据?
这是我的splashscreen.js
import { api } from '../../helpers'
const getAppToken = () => {
const post = {
user: 'dummy',
secret: 'dummy'
}
api.post('/v1/mp/authenticate', post)
.then(res => {
const { Data, Message } = res.data
if (Message === 'SUCCESS') {
setToken('app-token', Data.token)
navigation.replace('MainApp')
}
})
}
const setToken = async (key, value) => {
try {
await AsyncStorage.setItem(key, value)
} catch (error) {
console.log('error')
}
}
useEffect(() => {
getAppToken()
}, [])
这是来自 helpers 目录的 api.js
import { axios, AsyncStorage } from '../../libraries'
export const api = axios.create({
baseURL: 'dummy',
headers: {
'X-APP-TOKEN': 'dummy',
'X-Requested-With': 'XMLHttpRequest',
'content-type': 'application/merge -patch+json'
}
})
AsyncStorage.getItem('app-token')
.then(token => {
api.interceptors.request.use(config => {
config.headers = { Authorization: `Bearer${token}` }
return config
}, error => {
console.log(error)
return Promise.reject(error)
})
})
当位于 api.js 文件中的 AsyncStorage.getItem ('app-token') 运行时,它会收到 401 响应
解决方案
初始页面屏幕
axios.post('https://your_apikey', {}, {
headers: { 'Authorization': `Basic c2hvcHBpbmdfb2F1dGhfY2xpZW50OnNob3BwaW5nX29hdXRoX3NlY3JldA==` }
}).then(async (response) => {
console.log(response.data.data.access_token);
await AsyncStorage.setItem("token", response.data.data.access_token);
}).catch((error) => {
console.log(error);
});
主页//我的项目如您所愿(第二个初始页面)
axios.interceptors.request.use(
async config => {
const token = await AsyncStorage.getItem("token")
if (token) {
// console.log('if condition', await AsyncStorage.getItem("token"));
config.headers.Authorization = "Bearer " + token//pass ur token entire app once ur set
} else {
console.log('config');
}
return config
},
error => {
return Promise.reject(error)
}
);
推荐阅读
- c# - C# Appium AppiumOptions 错误功能平台名称是标准功能,不应该有appium前缀
- python - Python pip 8.1.1 升级失败
- python - 如何从 OrderedDict 中获取某些元素?
- cloudflare - 限速的 cloudflare 附加功能如何免费计划工作?
- jmeter - IfController 未在 forEach 控制器下定义的 Jmeter 中执行
- java - Parcelable bundle 只发送一次
- python - 如何修复格式错误的数据框
- regex - 多部分正则表达式
- java - 为什么 JPMS 允许注解类型作为服务
- sql - 在优化 sql 查询方面需要帮助