以前一直都是在用vue
,这两个月换了个公司,不过如今又离职了,这里什么框架都用,vue、angular、react
,通常公司都是选二项技术去开发已经就够了,
要不是vue+angular
或是react+angular
我的以为用了vue
还来个react
那简直是是是是,好吧,只能感觉到他们才是真正的技术宅。
我之前也有了解过react
以为它和vue
差很少,可是我错了,要是真正用起来仍是有大半不同的,都说vuex
是学习redux
,但这两个在实现上和功能运用上仍是有很大差别,
还有强大的jsx
语法,就以为混乱,这点vue
作的还不错,还有它的路由可操做的路由勾子也少,也没有什么watch
监听和计算属性之类,
可是仍是要说一句的是,react
是值得去学习的,你就不想知道它和vue
不同在哪里,一样的功能vue
是怎么实现react
是怎么实现的吗,要否则为何这个框架会比vue
还火呢!!
不说废话了,直接上代码吧,这里我是用webpack + nodejs
去搭建的。html
这里用到了redux、route3.x、还有一个简单的高阶组件运用
若是对redux不熟的话建议去看下阮一峰的教程vue
路由这块想必用多说了吧,你们一看也就能懂node
至于高阶组件听到这名字就以为是一个很深奥的东西,其实若是你用过vue
你应该知道mixins
,对,高阶组件也就是和mixins
差很少,它就是对公用组件的一种封装而已,没什么深奥的,react
行,我以为讲到以上这几点对作一个react项目应该够用了,至于其它的一些东西就去看api吧
(注:这里小调皮了一下用了eslint语法检查)webpack
import React from "react"; import {Router, Route, IndexRoute} from "react-router"; let {App, Main, Info, News, Article, NewsInfo} = ''; App = (lt, cb) => {require.ensure([], require => {cb(null, require('../views').default);}, '/');}; Main = (lt, cb) => {require.ensure([], require => {cb(null, require('../views/main').default);}, 'main');}; Info = (lt, cb) => {require.ensure([], require => {cb(null, require('../views/info').default);}, 'info');}; News = (lt, cb) => {require.ensure([], require => {cb(null, require('../views/news').default);}, 'news');}; NewsInfo = (lt, cb) => {require.ensure([], require => {cb(null, require('../views/newsInfo').default);}, 'news');}; Article = (lt, cb) => {require.ensure([], require => {cb(null, require('../views/article').default);}, 'article');}; class RouterMap extends React.Component { render() { return ( <Router history={this.props.history}> <Route path="/" getComponent={App}> <IndexRoute getComponent={Main} /> <Route path="info/:id" getComponent={Info} /> <Route path="news" getComponent={News} /> <Route path="news/:id" getComponent={NewsInfo} /> <Route path="article" getComponent={Article} /> </Route> </Router> ); } } export default RouterMap;
//每一个须要使用到redux的组件里主要是这三块 //他的整个流程以下步骤 //步骤3: function mapStateToProps(state) { return { newList: state.pageParams.newList.value, }; } //步骤1: function mapDispatchToProps(dispatch) { return { getNewsList: (value) => dispatch({type: GETNEWSLIST, value}), }; } ...... export default connect(mapStateToProps, mapDispatchToProps)(News); //redux //步骤2: function pageParams(state = {newList: []}, action) { return { newList: Object.assign(state.newList, action.type === GETNEWSLIST ? action.value : []), }; } export default combineReducers({ pageParams });
import React from 'react'; export default (WrappedComponent) => { class ArticleInfo extends React.Component { constructor(props) { super(props); this.state = { username: '', }; } componentWillMount() { let username = "科比、乔丹"; this.setState({ username: username, }); } dellClick(num) { if (num === 1) { console.log('科比'); }else { console.log('乔丹'); } } showClick() { console.log('我是showClick'); } render() { const props = { ...this.props, dClick: this.dellClick, sClick: this.showClick, }; return <WrappedComponent {...props} />; } } return ArticleInfo; };
好啦,主要内容就这些啦,是否是很简单。
其实最主要是的我也暂时没什么机会用到react,只是看到离职的这家公司在用,无聊本身也就作的一个demo,就当和你们一块儿温故知新吧git
代码地址这在
若是以为有用给我一个star吧 ~!~
最后给你们拜个早年!!!github