开始有一个ES6的class讲解,个人学过好些后端OOP语言,这一块听的比较随意,也不做笔记
假设现在一个App类的构造器提供了以下数据结构,现在要求在网页中使用ul>li将movies数组中的每一条信息展示出来
constructor() { super(); this.state = { movies: ["大话西游", "盗梦空间", "星际穿越", "流浪地球"] } }在这边提供两种展示方法:
第一种:
render() { const liArray = [];//创建空数组 for (let movie of this.state.movies) { liArray.push(<li>{movie}</li>);//遍历压入数组 } return ( <div> {/*第一种展示方式*/} <h2>电影列表</h2> <ul> {liArray}//展示整个数组内容 </ul> </div> ) }该种方法通过创建空数组将所有的信息一次遍历后利用push方法压入数组中,再一次性展示出来
创建空数组将所有的信息一次遍历后利用push方法压入数组中,再一次性展示出来
第二种
render() { return ( <div> {/*第二种展示方式*/} <h2>电影列表</h2> <ul> { this.state.movies.map((item) => { return <li>{item}</li> }) } </ul> </div> ) }该种方法通过使用函数map,对数组中的每一项进遍历,其中的每一项内容标记为item,随后以li包裹的方式返回,得到一个被li包裹的完整框架以达成展示的目的
针对第二个方法中出现的map函数进行一个简单的介绍,首先map函数本身具备两个参数 [array].map ( 参数1,参数2) - 参数1 ————— 回调函数,会根据调用对象里面的元素数量来确定回调函数的执行次数 - 参数2 ————— 使用的比较少,主要是给前面的回调函数绑定this 如果给第一个参数一个箭头函数,如下 在函数中具有三个参数, - 参数1: item ———— 执行时的对应元素 - 参数2: index ———— 执行元素对应的下标值 - 参数3: arr ———— 完整的数组对象 执行完成后,每个经过操作执行的元素会被存放入一个新定义的数组newArray中 const newArray = array.map((item,index,arr)=>{ return item//此处可以对item进行操作 })再次强调一下,方法中如果里面需要调用到this来指向组件中的state的数据并对其进行操作的话,必须在方法的后面添加绑定指针bind(this)来提供指向组件的指针。
onClick={this.decrement.bind(this)}因为侦听单击事件的回调函数是被react调用到内部去进行执行的,在调用的环境中,回调函数中的this是undefined,所以无法找到组件中的state
JSX是一种JavaScript的语法扩展(eXtension),也在很多地方称之为JavaScript XML,因为看起就是一段XML语法
此处type="text/babel"是调用jsx语法的标志
只有通过text/babel标记过的代码,才可以进行类似上面使用html标签对变量进行赋值的操作
它用于描述我们的UI界面,并且其完成可以和JavaScript融合在一起使用
书写规范:
JSX的顶层只能有一个根元素,所以我们很多时候会在外层包裹一个div原生(或者使用后面我们学习的Fragment)
为了方便阅读,我们通常在jsx的外层包裹一个小括号(),这样可以方便阅读,并且jsx可以进行换行书写
JSX中的标签可以是单标签,也可以是双标签
注意:如果是单标签,必须以/>结尾
个人理解就是html和javascript可以混着写的意思
两种错误的注释方式
return ( <div> //这是错误的注释 <h2>Hello World</h2> </div> ) 如果是直接在html相关的代码中间插入//来注释是无效的,因为//会被当做是文本而非常尴尬的显示在页面中 return ( <div> <!--这是错误的注释-->//直接就报错了 <h2>Hello World</h2> </div> ) 如果是使用html代码中<!— --->类型的格式来进行注释,编译器会直接语法报错,这归根结底是写js代码的地方总结:
当变量是Number、String、Array类型时,可以直接显示
当变量是null、undefined、Boolean类型时,内容为空
如果希望可以显示null、undefined、Boolean,那么需要转成字符串,比如toString方法、和空字符串拼接,String(变量)等方式;
对象类型不能作为子元素(not valid as a React child)
JSX可以嵌入表达式,比如运算表达式、三元运算符、执行一个函数
. . . . 感谢coderwhy(王红元老师)的课程
最后爱生活,爱猪猪