"Перейти к содержанию"
Допустим, вы отправляете кнопку от родителя к дочернему элементу, используя реквизиты рендеринга. Как правильно отобразить и разместить возвращаемую кнопку?
Как оказалось, это совсем несложно.
Допустим, это ваш компонент, который использует реквизиты рендеринга для возврата как состояния переключения, так и кнопки переключения.
const React = require('react'); class ToggleProvider extends React.Component{ constructor(){ super(); this.state = { toggle: false }; } handleToggle = () => { this.setState({toggle: !this.state.toggle}); }; renderToggle = () => { return ( <button onClick={this.handleToggle}> Toggle Me </button> ); }; render() { return this.props.children({ buttonState: this.state.toggle ? "true" : "false", button: this.renderToggle() }); } } module.exports = ToggleProvider;
Чтобы использовать вышеуказанный провайдер, у вас может возникнуть соблазн (из-за шаблонов) сделать это.
<ToggleProvider>{ ({toggleButton, toggleState}) => ( <div className='my-container'> <toggleButton /> State: {toggleState} </div> )} </ToggleProvider>
Однако, поскольку родитель уже отобразил кнопку, дочернему элементу нужно только разместить отрисованный компонент, как если бы это была любая другая переменная.
<ToggleProvider>{ ({toggleButton, toggleState}) => ( <div className='my-container'> {toggleButton} State: {toggleState} </div> )} </ToggleProvider>
Вот и все.
Первоначально опубликовано на redsunsoft.com 6 августа 2018 г.