赞
踩
lesson4-react全家桶及原理解析.mov
Generator 函数是 ES6 提供的⼀种异步编程解决⽅案,语法⾏为与传统函数完全不同,详细参考参考阮⼀峰。
function* helloWorldGenerator() {
yield 'hello';
yield 'world';
return 'ending';
}
var hw = helloWorldGenerator();
//执⾏
console.log(hw.next());
console.log(hw.next());
console.log(hw.next());
console.log(hw.next());
由于 Generator 函数返回的遍历器对象,只有调⽤ next⽅法才会遍历下⼀
个内部状态,所以其实提供了⼀种可以暂停执⾏的函数。 yield表达式就
是暂停标志。
先创建⼀个RouterPage
import React, { Component } from "react"; import { BrowserRouter, Switch, Link, Route } from "react/router-dom"; import LoginPage from "./LoginPage"; import UserPage from "./UserPage"; import PrivatePage from "./PrivatePage"; export default class RouterPage extends Component { render() { return ( <div> <h1>RouterPage</h1> <BrowserRouter> <Link to="/login">登录</Link> <Link to="/user">⽤户中⼼</Link> <Switch> <Route path="/login" component={ LoginPage} /> { /* <Route path="/user" component={ UserPage} /> */} <PrivatePage path="/user" component={ UserPage} /> </Switch> </BrowserRouter> </div> ); } }
创建store/index.js
import { createStore, combineReducers, applyMiddleware } from "redux"; import thunk from "redux-thunk"; const initialLogin = { isLogin: false, loading: false, name: "", error: "", }; function loginReducer(state = { ...initialLogin }, action) { switch (action.type) { case "requestLogin": return { ...initialLogin, loading: true, }; case "requestSuccess": return { ...state, isLogin: true, loading: false, }; default: return state; } } const store = createStore( combineReducers({ user: loginReducer }), applyMiddleware(thunk), ); export default store;
登录⻚⾯pages/LoginPage.js
import React, { Component } from "react"; import { Redirect } from "react-router-dom"; import { connect } from "react-redux"; export default connect( //mapStateToProps state => ({ isLogin: state.user.isLogin, loading: state.user.loading, }), { //mapDispathToProps /* login: () => ({ type: "requestSuccess", }), */ login: () => dispatch => { dispatch({ type: "requestLogin" }); setTimeout(()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。