Я новичок в React.js и смущен тем, как следующие 2 функции displayGender
и toggleGender
имеют доступ к this.props
по-разному.Доступ к this.props из функций React Component
import React, { Component } from 'react';
export default class User extends Component {
displayGender() {
console.log('displayGender: ', this.props)
}
toggleGender() {
console.log('toggleGender: ', this.props)
}
render() {
return (
<Button onClick={ this.toggleGender.bind(this) } >
{ this.displayGender.bind(this) }
</Button>
);
}
}
Почему this.toggleGender.bind(this)
в состоянии получить доступ this.props
, который был передан в этот Реагировать компонент User
, но this.displayGender.bind(this)
видит this.props
как undefined
?
До сих пор я могу получить только this.props
в пределах this.displayGender
, если я передам его функции. Это обычная практика?
export default class User extends Component {
displayGender(props) {
console.log(props.user)
}
render() {
return (
<Button onClick={ this.toggleGender.bind(this) } >
{ this.displayGender(this.props) }
</Button>
);
}
}
Весьма странно передавать * функцию * в качестве ребенка в компонент React. Возможно, вы хотите * вызвать * функцию (и в будущем передать возвращаемое значение в качестве дочернего)? * «Это обычная практика?» * Если вы вызываете функцию напрямую (т. Е. '{This.displayGender()}'), не должно быть проблем с доступом к 'this.props'. –
@FelixKling Можете ли вы объяснить, как я передаю функцию в качестве ребенка? Извините, путайте здесь. – Nyxynyx
'.bind' возвращает функцию. Следовательно, '{this.displayGender.bind (this)}' передает функцию в виде дочернего элемента в ''. –