美文网首页
React扩展之renderProps&ErrorBoundar

React扩展之renderProps&ErrorBoundar

作者: 硅谷干货 | 来源:发表于2021-12-16 10:54 被阅读0次

    renderProps

    import React, { Component } from 'react'
    import './index.css'
    
    export default class Parent extends Component {
        render() {
            return (
                <div className="parent">
                    <h3>我是Parent组件</h3>
                    <A render={(name)=><C name={name}/>}/>
                </div>
            )
        }
    }
    
    class A extends Component {
        state = {name:'tom'}
        render() {
            console.log(this.props);
            const {name} = this.state
            return (
                <div className="a">
                    <h3>我是A组件</h3>
                    {this.props.render(name)}
                </div>
            )
        }
    }
    
    class B extends Component {
        render() {
            console.log('B--render');
            return (
                <div className="b">
                    <h3>我是B组件,{this.props.name}</h3>
                </div>
            )
        }
    }
    
    

    ErrorBoundary

    分别创建父子组件 Child.jsxParent.jsx

    import React, { Component } from 'react'
    
    export default class Child extends Component {
        state = {
            users:[
                {id:'001',name:'tom',age:18},
                {id:'002',name:'jack',age:19},
                {id:'003',name:'peiqi',age:20},
            ]
            // users:'abc'
        }
    
        render() {
            return (
                <div>
                    <h2>我是Child组件</h2>
                    {
                        this.state.users.map((userObj)=>{
                            return <h4 key={userObj.id}>{userObj.name}----{userObj.age}</h4>
                        })
                    }
                </div>
            )
        }
    }
    

    使用

    import React, { Component } from 'react'
    import Child from './Child'
    
    export default class Parent extends Component {
    
        state = {
            hasError:'' //用于标识子组件是否产生错误
        }
    
        //当Parent的子组件出现报错时候,会触发getDerivedStateFromError调用,并携带错误信息
        static getDerivedStateFromError(error){
            console.log('@@@',error);
            return {hasError:error}
        }
    
        componentDidCatch(){
            console.log('此处统计错误,反馈给服务器,用于通知编码人员进行bug的解决');
        }
    
        render() {
            return (
                <div>
                    <h2>我是Parent组件</h2>
                    {this.state.hasError ? <h2>当前网络不稳定,稍后再试</h2> : <Child/>}
                </div>
            )
        }
    }
    
    

    相关文章

      网友评论

          本文标题:React扩展之renderProps&ErrorBoundar

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