Как передать данные из одной переменной в реквизит в другую в приложении React? - PullRequest
0 голосов
/ 14 октября 2018
class StarRating extends Component {
  constructor (props) {
    super(props)
}

 log = (selected) => {
  console.log(selected)
}

  render() {
        return <div>
          <Star
          selected = {true}
          doClick={() => this.log(this.selected)}
          />
          <Star />
          <Star/>
          <Star/>
          <Star/>
          </div>
        }
}

Мне нужно передать «selected», то есть «true» в моем случае, чтобы записывать в журнал, но написано «undefined», что мне изменить?

Это компонент Star.

const Star =  ({selected, doClick=f=>f}) =>
<div className = {(selected) ? "star selected" : "star"} onClick={doClick}></div>

Star.propTypes = {
selected: PropTypes.bool,
doClick: PropTypes.func
}
export default Star

1 Ответ

0 голосов
/ 14 октября 2018

Вам необходимо создать свой компонент StarRating, как показано ниже

class StarRating extends Component {
    constructor (props) {
      super(props);
      this.state = {
        selected: false
      }
  }

   log = () => {
    this.setState({
        selected: true
    });
  }

    render() {
          return <div>
            <Star
            selected = {this.state.selected}
            doClick={this.log}
            />
            <Star />
            <Star/>
            <Star/>
            <Star/>
            </div>
          }
  }

И

const Star =  ({selected, doClick}) => <div className = {(selected) ? "star selected" : "star"} onClick={doClick}></div>

Star.propTypes = {
  selected: PropTypes.bool,
  doClick: PropTypes.func
}
export default Star;
...