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.