赞
踩
官方环境搭建地址 https://reactnative.cn/docs/environment-setup
react-native 0.63.3
node v12.10.0
1.react-native 0.65版本,xcode需12.0及以上,android studio需4.2及以上。
2.在pod install时某些资源需翻墙,或配置本地hosts,参考文章 https://juejin.cn/post/6844904193170341896。
3.在必要的步骤进行后若报错,请使用xcode打开ios文件夹下的.xcworkspace文件运行,android打开android目录下的bulid.gradle文件运行,这样可以更快的找到错误。
1.运行android环境建议使用真机运行,ios环境建议使用虚拟机运行,android虚拟机反应较慢,且内存占用较多。
2.android真机运行最好使用android studio运行,确保手机已连接至电脑,且电脑wifi及手机wifi在同一IP下,参考地址 https://www.react-native.cn/docs/0.63/running-on-device。
3.ios真机运行时确保手机上已安装过该开发账户的app,或者在开发者网站上将设备加入至授权设备中,参考地址 https://www.react-native.cn/docs/0.63/running-on-device。
yarn add redux react-redux redux-thunk
App.js
import React from 'react' import NavigationComponent from './navigator' import { Provider } from 'react-redux' import store from './store' /** * 应用入口文件 */ function App() { return ( <Provider store={store}> <NavigationComponent routeName={routeName} /> </Provider> ) } export default App
store
import { applyMiddleware, createStore } from 'redux' import thunk from 'redux-thunk' import reducers from '../reducer' /** * 自定义log中间件 * 关于中间件的更多解释可参考:https://cn.redux.js.org/docs/advanced/Middleware.html * @param store */ const logger = (store) => (next) => (action) => { if (typeof action === 'function') { console.log('dispatching a function') } else { console.log('dispatching ', action) } const result = next(action) console.log('nextState ', store.getState()) return result } const middlewares = [logger, thunk] export default createStore(reducers, applyMiddleware(...middlewares))
action
import fetch from '../../utils/fetch' import Types from './types' /** * 登录获取用户信息及token * @param {object}param 请求参数 * @returns {function(*=)} */ function onChangeUser(data) { return (dispatch) => { dispatch({ type: Types.TOKEN_LOAD_STATUS, data }) } } export default { onChangeUser, }
reducer
import Types from '../../action/token/types' // 定义初始数据 const defaultState = { isLoading: true, tokenLoading: true, data: null, } /** * 基于action type动态设置TOKEN是否有效状态 * @param state * @param action * @returns {{TOKEN: (onAction|*|string)}} */ export default function onAction(state, action) { state = state || defaultState switch (action.type) { case Types.TOKEN_LOAD_STATUS: //token本地获取 return { ...state, tokenLoading: false, data: action.data, } default: return state } }
示例
import { useSelector } from 'react-redux'
const userInfo = useSelector((state) => state.token.data) || {}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。