@PlasterTom

Для чего props указаны явно?

Почему в первой строчке в функциональном компоненте вместо (props) явно перечислены свойства {comments=[], isOpen, toggleOpen} ? Это связано с использованием декоратора?

function CommentList ({comments=[], isOpen, toggleOpen}){
    const text = isOpen ? 'hide comments': 'show comments'
        return(
            <div>
                <button onClick={toggleOpen}>{text}</button>
                {getBody(comments,isOpen)}
            </div>
        )
}

function getBody(comments,isOpen) {
    if (!isOpen) return null
    if (!comments.length) return (
    <div>
        <p>No comments yet</p>
    </div>
    )
    return (
    <div>
        <ul>
            {comments.map(comment => <li key={comment.id} ><Comment comment={comment}/></li>)}
        </ul>
    </div>
    )
}

export default toggleOpen(CommentList)


И на самом деле у меня есть второй вопрос по работе декоратора. Строчка
<OriginalComponent {...this.props} isOpen={this.state.isOpen} toggleOpen={this.toggleOpen}/>
- какие ...this.props сюда передаются? WrappedComponent-а? А какие у него пропсы?
export default (OriginalComponent)=> class WrappedComponent extends Component {
    
    state = {
        isOpen: false
    }

 toggleOpen = (ev) => {
     ev && ev.preventDefault && ev.preventDefault()
        this.setState({
         
          commnetsIsOpen: !this.state.commnetsIsOpen  
        })
    }
    render() {
        return <OriginalComponent {...this.props} isOpen={this.state.isOpen} toggleOpen={this.toggleOpen}/>
    }
}
  • Вопрос задан
  • 597 просмотров
Решения вопроса 1
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы