ES6 拾遗(5)

Submitted by Lizhe on Mon, 06/25/2018 - 17:41

数组的扩展

1. 扩展运算符( spread ) 是三个点 ( ... ), 它如同rest参数的逆运算, 将一个数组转为用逗号分隔的参数序列

console.log( ...[1,2,3])
console.log( 1,2, ...[3,4,5], 6 )

2. 合并数组

扩展运算符提供了数组合并的新方法

ES5
[ 1,2 ] .contact( more )

ES6
[ 1,2 ...more ]

3. Array.from()

Array.from方法用于将两类对象转为真正的数组

ES6 拾遗(4)

Submitted by Lizhe on Mon, 06/25/2018 - 13:36

箭头函数

ES6 允许使用"箭头" => 来定义函数

var f = argument => argument +1

上面的代码等价于

var f = function ( argumenrt ) {

    return argument + 1

}

如果箭头函数不需要参数或需要多个参数, 就使用圆括号代表参数部分
var f = () => 5

如果箭头函数的代码块部分多于一条语句, 就要使用大括号将其括起来, 并使用return语句返回
var sum = (a,b) => {return a+b}

由于大括号被解释为代码块, 所以如果需要箭头函数直接返回一个对象, 必需在对象外面加上括号
var getTemp = (id) => ({ id:id, name:"lizhe"})

箭头函数可以与变量解构一起使用
const getTemp = ({ id, name }) => id + "of " +name

ES6 拾遗(3)

Submitted by Lizhe on Thu, 06/21/2018 - 15:45

Promise 对象

所谓promise, 简单来说是一个容器, 里面保存着某个未来才会结束的事件

有 3 种状态 Pending 进行中, Fulfilled 已成功, Rejected 已失败

ES6规定, Promise对象是一个构造函数, 用来生成Promise实例.

function test(){

  let value = "hello world";

  var promise = new Promise(

    function(resolve,reject){

      if(true){

        resolve(value)

      }else{

        reject(value)

      }

    }

  );

}

ES6 拾遗(2)

Submitted by Lizhe on Thu, 06/21/2018 - 10:37

 

1. 函数参数的默认值

在ES6 之前, 不能直接为函数的参数指定默认值, 只能采用变通的办法

20180621104353

上面代码的缺陷在于如果name被赋值为false或者""则默认值会生效

ES6中可以直接为参数赋默认值,并且默认值只有在参数值为undefined时才会生效, null和"" 不会造成影响

ES6 拾遗(1)

Submitted by Lizhe on Wed, 06/20/2018 - 17:03

 

 

1. let const 不存在变量提升

2. let const 绑定到块级作用域

3. ES6 允许块级作用域无限叠加

4. ES5 中的函数只能在顶层作用域和函数作用域之中声明,不能在块级作用域中声明

5. ES6 中明确允许在块级作用域之中声明函数. ES6规定, 在块级作用域之中声明的函数在块级作用域之外不可用(类似于let)

实际情况中为了兼容旧代码

允许在块级作用域内声明函数

声明类似var, 仍然会提升到全局作用域或函数作用域的头部

同时, 函数声明还会提升到所在的块级作用域的头部

考虑到环境导致的行为差异太大, 应该避免在块级作用域内声明函数.

如果确实需要, 也应该写成函数表达式的形式

 

函数声明语句

{

 

let a = “ message “;

function f() {

return a;

}

}

 

函数表达式

Nodejs IDE

Submitted by Lizhe on Wed, 06/20/2018 - 16:14

 

https://code.visualstudio.com/

https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode

react-intl

Submitted by Lizhe on Thu, 06/14/2018 - 15:36

Internationalize React apps. This library provides React components and an API to format dates, numbers, and strings, including pluralization and handling translations.

react intl 用于格式化日期, 数字, 字符串多元化和翻译(实际上可以用做国际化)

安装

$ npm install react-intl --save

 

 

Formik 总结

Submitted by Lizhe on Thu, 06/14/2018 - 09:44

以下内容总结自Formik的官方文档, 所以你会看到一些原文引用(当然是我过滤后的)

Overview

Formik 总的来说帮助我们做下面3件事

  1. Getting values in and out of form state
  2. Validation and error messages
  3. Handling form submission

 

Why not Redux-Form?

总的来说, redux form提供的东西太重了, 过多的reducer, 而且通常情况下我的Form值并不需要保存在redux的state中

My goal with Formik was to create a scalable, performant, form helper with a minimal API that does the really really annoying stuff and leaves the rest up to you.

 

Formik 使用以下3个event handlers

react-testing-library

Submitted by Lizhe on Mon, 06/11/2018 - 16:27

任意目录下的 *.test.js

__tests__ 目录下的 *.js

 

import React from 'react'
import {renderIntoDocument, cleanup} from 'react-testing-library'
import App from '../App'
import * as jestDom from 'jest-dom'

expect.extend(jestDom)

afterEach(cleanup)