react全家桶使用入门
- 前端
- 三生万物
- 0
官网地址
- redux:http://www.redux.org.cn/
- react-redux:http://cn.redux.js.org/docs/react-redux
- react-router:https://www.npmjs.com/package/react-router
部分目录结构
├─ src
├─ routes
├─ ├─ index.js
├─ store
├─ ├─ index.js
├─ App.js
└─ index.js
一、安装
[project_name]> npm redux react-redux react-router --save
二、创建store
store/index.js
import {createStore} from 'redux';
function toDo(state = {name: 'tom'}, action) {
switch (action.type) {
case 'CHANGE_NAME':
return {...state, ...action.payload};
default:
return state;
}
}
let store = createStore(toDo);
export default store;
三、创建routes
routes/index.js
import App from '../App';
const routes = [
{
path: '/',
component: App
}
];
export default routes;
四、导入
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import {Router, browserHistory} from 'react-router';
import {Provider} from "react-redux";
import store from './store';
import routes from './routes';
import registerServiceWorker from './registerServiceWorker';
ReactDOM.render(
<Provider store={store}>
<Router history={browserHistory}>{routes}</Router>
</Provider>,
document.getElementById('root')
);
registerServiceWorker(); // 用于生产环境cache数据
五、组件(页面)使用
App.js
import React, {Component} from 'react';
import {connect} from "react-redux";
class App extends Component {
constructor(props){
super(props);
}
render() {
return (
<div>
{this.props.cName}
<button type="button" onClick={this.changeName.bind(this)}>改变name</button>
</div>
);
}
changeName() {
this.props.changeName({name: 'jack'});
}
}
// 把state放到props里
function mapStateToProps(state, props) {
return {
cName: state.name
}
}
// 把方法放到props里
function mapDispatchToProps(dispatch, props) {
return {
changeName: (payload)=>dispatch({type: 'CHANGE_NAME', payload: payload})
}
}
export default connect(mapStateToProps, mapDispatchToProps)(App);
免责申明:本站发布的内容(图片、视频和文字)以转载和分享为主,文章观点不代表本站立场,如涉及侵权请联系站长邮箱:xbc-online@qq.com进行反馈,一经查实,将立刻删除涉嫌侵权内容。