Jeśli sprawdzeniu MDN: Spread operator:
Rozprzestrzenianie składnia umożliwia wyrażenie zostać rozszerzony w miejscach, gdzie wiele argumentów (dla wywołań funkcji) lub kilka elementów (na literałów tablicowych) lub kilka zmiennych (w przypadku przypisania restrukturyzacji) oczekiwane są: .
Jeśli widzisz, operator spread wewnątrz składni JSX oceny ekspresji, a następnie
<Button {...condition ? {bsStyle: 'success'} : {}} />
stanie się coś takiego, (after babel run with react bootstrap example)
:
_react2.default.createElement(_reactBootstrap.Button, condition ? { bsStyle: 'success' } : {})
To może być także napisany jako:
<Button bsStyle={condition ? 'success' : ''} />
Który następnie oznacza, że mijasz podpory bsStyle
z pustym ciągiem.
Aby warunkowo przekazać same rekwizyty, można wykorzystać operator rozrzutu i ocenić wyrażenie. To pomaga nam przekazać wiele rekwizytów na warunki:
<Button {...condition ? {bsStyle: 'success', bsSize:"large"} : {}} />
Zamiast:
<Button bsStyle={condition ? 'success' : ''} bsSize={condition ? 'large' : ''} />
Jest to spread JSX. '' 'Ma niższy priorytet, więc warunkowe wyrażenie operatora jest najpierw oceniane, a następnie zwracany obiekt (albo ten z właściwością' bsStyle' lub pusty) jest rozłożony. – zerkms
https://gist.github.com/sebmarkbage/07bbe37bc42b6d4aef81 – zerkms