Reactjs'de {… this.props} kelimesinin anlamı nedir


119

Anlamı ne

{...this.props}

Onu böyle kullanmaya çalışıyorum

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

Yanıtlar:


201

Yayılma nitelikleri olarak adlandırılır ve amacı nesnelerin geçişini kolaylaştırmaktır.

N sayıda özelliği kabul eden bir bileşene sahip olduğunuzu düşünelim. Sayı arttıkça bunları aktarmak sıkıcı ve hantal olabilir.

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

Böylece bunun yerine bunu yaparsınız, onları bir nesneye sarar ve forma gösterimini kullanırsınız

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

bu onu bileşeninizdeki aksesuarların içine açacaktır, yani işlevinizin {... props}içinde "asla" kullanmazsınız render(), yalnızca sahne öğelerini başka bir bileşene geçirdiğinizde. Paketlenmemiş eşyalarınızı normal şekilde kullanın this.props.x.


2
Eklemek this.transferPropsTogerekirse, React 0.12.x'te kullanımdan kaldırılan ve 0.13.x'te kaldırılacak bir yedek olarak düşünmek yardımcı olabilir. Tabii Ancak basitçe çeviri çok daha gelişmiş kullanım 0.11.x 's Tepki veriyor this.transferPropsTo(<Foo />)için <Foo {...this.props} />bu geçiş yapan insanlar için yararlıdır.
Mike Driver

13
İyi bir tarayıcı, ancak render () işlevinizin içinde "asla" {... props} kullanmazsınız, yalnızca props'i başka bir bileşene aktardığınızda. ' Çok kafa karıştırıcı bir ifade terimidir. Yeniden yazma önerisi şu şekildedir: "Props'u başka bir bileşene aktarırken yalnızca render () içinde {... props} kullanırsınız." açıklık için.
dprogramz

17

ES6 Spread_operatorve Destructuring_assignment.

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

Eşittir 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
);

görüntü açıklamasını buraya girin


veya 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
);

görüntü açıklamasını buraya girin

ref


1

Şunu derleyecektir:

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

Yukarıda görebileceğiniz gibi, tüm sahne donanımlarını div.


1

ES-6 özelliğidir. Bu, sahne öğelerinin tüm özelliklerini çıkardığınız anlamına gelir. div.{... }

operatör, bir nesnenin özelliklerini çıkarmak için kullanılır.


1

Alt bileşeninizde sahne kullanacaksınız

Örneğin

şimdi bileşen aksesuarınız ise

{
   booking: 4,
   isDisable: false
}

bu malzemeleri çocuğunuzun compoenet'inde kullanabilirsiniz

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

alt bileşeninizde, tüm ebeveyn eşyalarınızı alacaksınız.


İyi cevap, ancak sahne donanımlarının ne işe yaradığına dair bir açıklama eklerseniz daha da iyi olur.
Mike Poole
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.