React实战——基于百度IFE学院task50
来源:互联网 发布:期货配资软件 编辑:程序博客网 时间:2024/05/22 17:42
背景
2016年的百度IFE学院进行到现在已经快要收尾了,最后一个阶段也就是第四阶段的任务早已放出来了,第四阶段其中的一个任务task50是问卷调查的网页。
在查阅了一些大牛的意见后对目前前端的方向有以下推荐:
- JS:react+redux+react-router
- css: css-modules+sass/less/postcess
- 构建工具: webpack+Babel+npm
- 其次,目前较多的团队都开始去jQuery化了,值得注意。
- 建议react——>router——>es6——>redux
这个问卷调查网页一度想用jQuery mobile去完成,因为无论是界面、功能还是使用终端上来说,这个问卷调查的页面都挺适合用web app的框架来写。
但是jQuery mobile已经写过了一个TODO来练手了,所以这次打算用React撸一下,顺便入个React的门。
于是乎开了这篇博客来记录我完成整个项目过程中的难题和经验。
引入JS文件
如果纯使用React的话必需要引入这三个文件
react.js 、react-dom.js 和 Browser.js ,它们必须首先加载。其中,react.js 是 React 的核心库,react-dom.js 是提供与 DOM 相关的功能,Browser.js 的作用是将 JSX 语法转为 JavaScript 语法,这一步很消耗时间,实际上线的时候,应该将它放到服务器完成。
————阮一峰老师的React入门
如果是通过一些自动化框架(如webpack)来做的话只要提前引入就好了。
toggle功能
项目中碰到需要一键选择所有select
选项框并改变其样式。在这个时候可以先通过getInitialState
设置初始的state
,这样可以随时通过this.state.XXX
来调取预设的条件。
然后通过handleClick
或者handleChange
来动态更改state
的值,注意:要用this.setState
方法去改,直接给this.state.XXX
赋值的方法行不通。
JSX语法与HTML
一定要牢记JSX语法中都不再是是HTML,并且class等是关键词,所以当需要在JSX语法里面设置class或者事件函数的时候,要使用驼峰法命名。比如:onClick,添加class则要用className
Router 路由
教程
这个系列教程做完就能很明白了——react-router-tutorial
经验
慢慢摸索中,尤其是里面关于激活后的样式,默认的主页都有方法,可以参考一下这篇文章——React-Router学习整理
调用JSX里的参数
首先,JSX里的参数要用花括号{}括起来。
当要调用的参数是JSX里的时可以用this
,当参数在render里面,return的前面时,直接把参数放入花括号中即可。
webpack 打包
教程
- 这本书走下来,webpack基本上就跑起来了——webpack入门指南
- 对配置文件里面的参数有详细的注释——一小时包教会 webpack 入门指南
- 有介绍普通JS和通过Babel来写代码对比——轻松入门React和Webpack
- 一个详细的webpack指南,目前还在更新中——webpack
经验
引用路径
在npm
里面使用webpack
打包的时候,在zJS里面引用文件的方法与HTML里面不同,HTML里面同目录引用是类似:src="hello.js"
但是JS里面引用的话要遵循NodeJS里面的方法,比如我的目录是:
|+src
|++app.js
|+entry.js
这样的话想在entry.js里面require
到app.js,按照HTML里的方法应该是 require('src/app.js')
但是这么的话调用webpack
的时候就会报错,正确的这么引用: require('./src/app.js')
找了很久在这篇文章中找到答案。——NodeJs:“require” 函数详解,懂这个你就懂NodeJs了
Babel 转义
最新版6以上的Babel貌似不支持转义了,所以在webpack里面的loader要添加预设es2015,以下是我的设置。
{ test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' }
下面是babel 6 的提示:
From the babel 6 Release notes:
Since Babel is focusing on being a platform for JavaScript tooling and not an ES2015 transpiler, we’ve decided to make all of the plugins opt-in. This means when you install Babel it will no longer transpile your ES2015 code by default.
参考链接:
- 关于webpack编译时的错误, Unexpected token <
- “unexpected token import” in Nodejs5 and babel?
Redux
教程
关于Redux的学习,这个仓库介绍的很详细react-redux-tutorial
由于redux里面使用的es5以及以上的语法,所以建议学习前先了解下es6,我就是在es语法的地方都看不懂然后傻了很久没有进展。必需要掌握的可以看我的es5学习笔记——ECMAScript 6 notebook
经验
需要实现动态增减内容,简单的页面其实可以用自带state加props就能解决了,官方提供了一个表单制作的示例,下面的链接感觉比官方要容易懂点供参考:react简易表单。
更新state的方法参照下方
就是因为以前看到state是数组,就自然而然的想到用push方法去更新,这是错误的。
var state = [{text:'test1',completed: false}];//更新statestate = [...state,{text:'test2',completed: false}];//而不是state.push({text:'test2',completed: false});
注意:
唯一能更新state的方法就是触发action,使用store的dispatch更新state
- React实战——基于百度IFE学院task50
- 百度IFE学院
- 百度IFE前端学院小记
- 百度IFE前端学院2017热身题
- 百度web-ife前端学院-task1学习笔记
- 百度web-ife前端学院-task2 JavaScript基础学习笔记
- 百度IFE前端学院2016年任务习题汇总
- 百度ife
- ife——task35
- 百度前端学院—小薇学院—任务一
- 百度前端学院—小薇学院—任务三
- 百度前端学院—小薇学院—任务四
- IFE 斌斌学院(js)
- 百度前端学院任务练习—二
- 百度前端学院(IFE),面向大学生的前端技术学习平台,请在底部填写css,将彩色`IFE`字母移动到指定位置
- IFE糯米学院-自定义鼠标右键
- IFE糯米学院-正则表达式入门
- IFE耀耀学院-表单总结
- mysql 带参数的游标
- python中if __name__ == '__main__': 的解析
- 选择排序法——1到1000
- Android Logcat输出为何能自动换行输出的原因以及多\n的作用
- mac下 ffmpeg 编译到android平台(支持 frei0r)
- React实战——基于百度IFE学院task50
- @interface 自定义annotation 通过AOP来实现人员操作日志
- springmvc参数绑定常用注解
- 23变成二进制
- iOS开发设置UISearchBar的输入背景框、提示文字等
- 幂等一二三
- JSON数据与NSDictionary和NSArray之间的转化
- 友盟分享
- 从Handler+Message+Looper源码带你分析Android系统的消息处理机制