初学react
React特点:
声明式设计;建议使用JSX来描述用户界面;构建组件;单向响应的数据流;
JSX:JSX是一种JAVASCRIPT的语法扩展,元素是构成react的最小单位,JSX就是用来声明REACT中的元素的。
1.指定属性:JSX可以用引号来指定已字符串为值的属性;const element = <div tableIndex = "0"></div>
JSX可以用大括号来定义以javascript表达式为值的属性;const element = <div>{name}</div> 小驼峰命名;
2.嵌套格式:JSX像HTML一样,闭合标签,也可以相互嵌套;
const element = ( <div> <img src="***"/></div>)
3.使用表达式: 在JSX中可以任意使用javascript表达式,但要放在大括号里;同时在JSX代码的外面加一个小括号,防止分号自动插入的bug;不可以写语句;
const element = ( <div> <h1>{ hi,{format(createTime)}}</h1></div>)
可以在if或for里面使用,将他赋值给变量,当作参数传入,也可以作为返回值;
function gettingData(user){
if(user){
return <h1>hello,{format(user)}</h1>
}else{
return <h2>hello,stranger!</h2>
}
}
4.防注入攻击: 所有的内容在渲染之前都被转换成字符串了,这样可以有效防止XSS。
5.表示对象: Babel转译器会把JSX转换成一个名为React.createElement()的方法调用;
以下两段类似:
const element = (<div> <h1 className="getting">hello</h1></div>)
React.createElement('h1', {className: 'getting'}, 'hello')
安装:
通过NPM使用react,安装淘宝镜像:
npm install -g cnpm --registry=https://registry.npm.taobao.org
npm config set registry https://registry.npm.taobao.org
使用creat-react-app快速构建React开发环境;creat-react-app自动创建的项目是基于webpack+ES6;
$ cnpm install -g create-react-app
$ create-react-app my-app
$ cd my-app/
$ npm start 入口文件:index.js
大写字母开头的都是组件;
在index.js中引入React库,使浏览器能够理解组件的语法,ReactDom库的意义在于将组件挂载到DOM节点上。
JSX一定要放在一个大的div中;
事件绑定:onClick={this.handleBtnClick},this指向这个组件;
constructor(props){
super(props)
this.state = {
list: []
}
}
如果要用到state中的值,需要在方法中用展开运算符展开内容,不直接操作state中的值;list: [...this.state.list];
在方法中直接用,不用加this,在JSX中用this.state.list;
this.setState((prevState, props) => {isCollepes: prevState.isCollepes}),setState()可以接受一个函数,这个函数接受两个参数,第一个参数表示上一个状态,第二个函数表示当前的props; 父子传参:
父传子:通过属性传参,content = {item},
在子组件用this.props.content接收;
子传父:要调用父组件传来的方法,在父组件通过创建事件句柄,并作为prop传递到子组件;
父组件:return <TodoItem delete={this.handleDelete.bind(this)}/> handleDelete(index){};
子组件:<div onClick={this.handleDelete.bind(this)}></div>
handleDelete(){this.props.delete(this.props.index)} 此时,子组件将index传给了父组件,父组件中handleDelete函数中可以获取到;
父组件向子组件传事件:
在父组件的子标签中,定义事件<Person myClick={this.handleClick.bind(this, '此值')}></Person>;
在子组件中,<div onClick={this.props.myClick}></div> 代码优化:
在constructor中做事件中的this指向的处理,如:this.handleInput = this.handleInput.bing(this)
render函数中外层包裹的标签可以不用div空标签,换成<Fragment></Fragment>,前提是要引入{Component}; 如果要获取父组件中子标签中的内容,可以在子组件中使用this.props.children;
初学react的更多相关文章
- 初学React:JSX语法
这是本人初学React做的学习笔记;讲的不是很深,只算是简单的进行介绍. 这是一个小系列.都是在同一个模板中搭建的,但是代码是不能正常执行的. >>第一个组件.js 'use strick ...
- 初学React,setState后获取到的thisstate没变,还是初始state?
问题:(javascript)初学React,setState后获取到的thisstate没变,还是初始state?描述: getInitialState(){ return {data:[]}; } ...
- 重写官方TodoList,对于初学react+redux的人来说,很有好处
虽然官网的TodoList的例子写的很详细,但是都是一步到位,就是给你一个action,好家伙,全部都写好了,给你一个reducer,所有功能也是都写好了,但是我们这些小白怎么可能一下就消化那么多,那 ...
- 初学 react | redux
react | redux 一.安装 React Redux 依赖 React 0.14或更新版本 npm install --sava react-redux 你需要使用 npm 作为包管理工具,配 ...
- 初学React:组件的样式
React中组件的样式有三种: <!DOCTYPE html> <html lang="en"> <head> <meta charset ...
- 初学React:定义一个组件
接着聊React,今天说说如何创建一个组件类. <!DOCTYPE html> <html lang="en"> <head> <meta ...
- 初学 React native | 环境搭建(在模拟器上运行)
我的电脑是windows 所以就以 windows上+Android 配置React native 环境 网上的安装教程非常多,我总结了一下,配置环境时出错原因主要是node java python ...
- React Native 获取组件(Component)在屏幕上的位置
年后主客户端的需求以及老的业务迁移RN,现在疯狂的在学RN.在迁移需求的时候遇到需要获取组件在屏幕上的绝对位置.页面如下: 就需要展开的时候获取sectionHeader(默认排序)在屏幕上的具体位置 ...
- React 学习(一) ---- React Element /组件/JSX
学习React的时候,你可能听到最多的就是要先学习webpack, babel,要先学会配置然后才能学react 等等,一堆的配置就把我们吓着了,根本就没有心情就学习react了.其实在最开始学习re ...
随机推荐
- Java包装类之实体类不要使用基本类型
[color=rgba(0, 0, 0, 0.75)]今天来记录一下,在项目中因为基本类型,所产生的bug.**U•ェ•*U** 包装类:8种基本类型的包装类 应用场景:数据库建立实体映射多用包装类 ...
- PyTorch模型加载与保存的最佳实践
一般来说PyTorch有两种保存和读取模型参数的方法.但这篇文章我记录了一种最佳实践,可以在加载模型时避免掉一些问题. 第一种方案是保存整个模型: 1 torch.save(model_object, ...
- Linux那些事——GTK+, Qt, Gnome, KDE, xWindow, xOrg区别
Linux那些事--GTK+, Qt, Gnome, KDE, xWindow, xOrg区别 Linux不仅内核开源,系统配置也是高度可定制化的,其中就包括我们所熟知的图形界面,从桌面环境,主题,字 ...
- Mybatis工作流程及其原理与解析
Mybatis简介: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBat ...
- 为啥Waymo和Uber间的官司,这么难界定?
自动驾驶作为被众多巨头和创业者看好的技术及领域,已有众多企业涉足其中.在自动驾驶尚未完全落地.制定统一标准前,每家企业都在争分夺秒地进行研发,试图率先抢占自动驾驶的高地.毕竟一旦成功,就能够创造巨大的 ...
- 国内游戏直播火热 为何YY游戏直播却巨亏
为何YY游戏直播却巨亏" title="国内游戏直播火热 为何YY游戏直播却巨亏"> 伴随"千万年薪主播"."美女主播陪玩那些事儿&q ...
- 码海拾遗:简单Socket(TCP)类实现
最近刚开始啃Unix网络编程(卷1:套接字联网API),为加深TCP连接的建立和终止的理解与记忆,记下本文,方便以后翻看. 同时留下的还有简单的Socket(TCP)类: mySocket.h #pr ...
- 用Python搭建简单的HTTP服务 · Zhangxu's Blog
分享一个快速用Python搭建简单的HTTP服务的方法. 平时我们可能有需要,传输某个文件到手机,或者工作中某台服务器的电脑. 假如这个手机是个测试手机/服务器,并没有微信QQ之类的软件,而且你也不想 ...
- SAT考试里最难的数学题? · 三只猫的温暖
问题 今天无意中在Quora上看到有人贴出来一道号称是SAT里最难的一道数学题,一下子勾起了我的兴趣.于是拿起笔来写写画画,花了差不多十五分钟搞定.觉得有点意思,决定把解题过程记下来.原帖的图太小,我 ...
- C++走向远洋——48(项目一1、复数类中的运算符重载、类的成员函数)
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...