美文网首页
React思考题

React思考题

作者: 徐国军_plus | 来源:发表于2018-03-29 22:36 被阅读10次

1、组件为什么要大写?

2、props如何声明默认值

方法一:

class Demo extends React.Component {
    constructor() {
      ......
    }

    // static是es6的语法
    static defaultProps = {
        age: 20
    }

    render() {
      return (<div> the age is { this.props.age } </div>)
    }
}

ReactDOM.render(<Demo />, document.getElementById('root'))

方法二:

class Demo extends React.Component {
    constructor() {
      ......
    }

    render() {
      return (<div> the age is { this.props.age } </div>)
    }
}

Demo.defaultProps = {
    age: 20
}

ReactDOM.render(<Demo />, document.getElementById('root'))

3、如何进行props的类型检测

4、三种转this作用域的方法哪个更好?为什么?

方法一:

class Demo extends React.Component {

    constructor() {
        super();
        this.state = {
            count: 0,
            time: (new Date()).toLocaleTimeString()
        }
        this.handleClick = this.handleClick.bind(this)
    }

    handleClick() {
        alert(this.state.count)
    }

    render() {
        
        return (<div onClick={this.handleClick}> this time is { this.state.time } </div>)
    }
}

ReactDOM.render(<Demo />, document.getElementById('root'));

方法二:

class Demo extends React.Component {

    constructor() {
        super();
        this.state = {
            count: 0,
            time: (new Date()).toLocaleTimeString()
        }
    }

    handleClick() {
        alert(this.state.count)
    }

    render() {
        
        return (<div onClick={this.handleClick.bind(this)}> this time is { this.state.time } </div>)
    }
}

ReactDOM.render(<Demo />, document.getElementById('root'));

方法三:

class Demo extends React.Component {

    constructor() {
        super();
        this.state = {
            count: 0,
            time: (new Date()).toLocaleTimeString()
        }
    }

    handleClick() {
        alert(this.state.count)
    }

    render() {
        
        return (<div onClick={() => {this.handleClick}}> this time is { this.state.time } </div>)
    }
}

ReactDOM.render(<Demo />, document.getElementById('root'));

方法四:

class Demo extends React.Component {

    constructor() {
        super();
        this.state = {
            count: 0,
            time: (new Date()).toLocaleTimeString()
        }
    }
        
    // 这里的handleClick是一个属性,代表一个匿名函数,通过this.handleClick可以访问到这个属性值,也就是这个匿名函数
    handleClick = () => {
        alert(this.state.count)
    }

    render() {
        return (<div onClick={this.handleClick}> this time is { this.state.time } </div>)
    }
}

ReactDOM.render(<Demo />, document.getElementById('root'));

this.handleClick.bind(this)会生成新的函数(this.handleClick !== this.handleClick.bind(this),bind方法会返回新的函数),所以方法二和方法三不推荐使用,性能不好,每次渲染都会生成新的函数。方法一和方法三都可以。

5、什么是迭代器?迭代器有什么用?

6、了解generator以及co模块

7、使用修饰器实现一个安全渲染功能,要对react component的所有生命周期函数都进行try/catch

相关文章

  • React思考题

    1、组件为什么要大写? 2、props如何声明默认值 方法一: 方法二: 3、如何进行props的类型检测 4、三...

  • React基础的思考题

    组件为什么要大写?其实JSX是React.createElement()的语法糖,标签名为小写表示为DOM标签,而...

  • 思考题

    思考题 记得从小学的数学作业开始,我们就有思考题,在之后的试卷上也总是有思考题。很多小朋友都不喜欢做思考题,觉得很...

  • 读书笔记 -- 01 | 思想演变:佛学是怎么变成佛教的

    笔记 理解与思考 思考题

  • 《自尊》精读打卡

    2020.01.06 精读思考题 [微笑]今日思考题: 你内心的“应该”是“不讲理”的,还是“讲理”的呢?你的应对...

  • React基础

    react 教程 react 组件介绍 react state 介绍 react Props 介绍 React:组...

  • 《好读书而求甚解》Day7

    【思考题打卡】 第一周思考题? 1.说说,为什么要读书?(005、006、007、008) 高尔基说,书是人类进步...

  • 思考题

    1.在你看来,正义是属于哪个范畴或哪几个范畴的讨论概念? 感觉属于客观范畴、社会学范畴和哲学范畴的讨论概念(我不知...

  • 思考题

    一群小朋友叽叽喳喳的探讨一个大问题,世界杯与足球。沟通的语言是英文。这些咿呀学语,恐怕中文尚不能娴熟运用的孩子们。...

  • 思考题

    有2个盲人 一个人买了2双白袜子一个人买了2双黑袜子,他们不小心把4装袜子弄浑了,问在不借助外力和条件的情况下怎么...

网友评论

      本文标题:React思考题

      本文链接:https://www.haomeiwen.com/subject/ecorfftx.html