What is the meaning of {…this.props} in Reactjs

前端 未结 5 1988
南笙
南笙 2020-12-07 08:32

What is the meaning of

{...this.props}

I am trying to use it like that

 
Content Here
相关标签:
5条回答
  • 2020-12-07 08:45

    It's ES6 Spread_operator and Destructuring_assignment.

    <div {...this.props}>
      Content Here
    </div>
    

    It's equal to Class Component

    const person = {
        name: "xgqfrms",
        age: 23,
        country: "China"
    };
    
    class TestDemo extends React.Component {
        render() {
            const {name, age, country} = {...this.props};
            // const {name, age, country} = this.props;
            return (
              <div>
                  <h3> Person Information: </h3>
                  <ul>
                    <li>name={name}</li>
                    <li>age={age}</li>
                    <li>country={country}</li>
                  </ul>
              </div>
            );
        }
    }
    
    ReactDOM.render(
        <TestDemo {...person}/>
        , mountNode
    );
    


    or Function component

    const props = {
        name: "xgqfrms",
        age: 23,
        country: "China"
    };
    
    const Test = (props) => {
      return(
        <div
            name={props.name}
            age={props.age}
            country={props.country}>
            Content Here
            <ul>
              <li>name={props.name}</li>
              <li>age={props.age}</li>
              <li>country={props.country}</li>
            </ul>
        </div>
      );
    };
    
    ReactDOM.render(
        <div>
            <Test {...props}/>
            <hr/>
            <Test 
                name={props.name}
                age={props.age}
                country={props.country}
            />
        </div>
        , mountNode
    );
    

    refs

    • https://babeljs.io/docs/plugins/transform-object-rest-spread/

    • https://facebook.github.io/react/docs/components-and-props.html

    0 讨论(0)
  • 2020-12-07 08:45

    It is ES-6 feature. It means you extract all the properties of props in div.{... }

    operator is used to extract properties of an object.

    0 讨论(0)
  • 2020-12-07 08:48

    It's called spread attributes and its aim is to make the passing of props easier.

    Let us imagine that you have a component that accepts N number of properties. Passing these down can be tedious and unwieldy if the number grows.

    <Component x={} y={} z={} />
    

    Thus instead you do this, wrap them up in an object and use the spread notation

    var props = { x: 1, y: 1, z:1 };
    <Component {...props} />
    

    which will unpack it into the props on your component, i.e., you "never" use {... props} inside your render() function, only when you pass the props down to another component. Use your unpacked props as normal this.props.x.

    0 讨论(0)
  • 2020-12-07 08:50

    It will compile to this:

    React.createElement('div', this.props, 'Content Here');
    

    As you can see above, it passes all it's props to the div.

    0 讨论(0)
  • 2020-12-07 09:06

    You will use props in your child component

    for example

    if your now component props is

    {
       booking: 4,
       isDisable: false
    }
    

    you can use this props in your child compoenet

     <div {...this.props}> ... </div>
    

    in you child component, you will receive all your parent props.

    0 讨论(0)
提交回复
热议问题