это функция, которую я передаю классу реакции, используя контекстный api
он должен возвращать некоторые значения.
это работает так, как должно работать, когда Mobilebar является компонентом без сохранения состояния
но когда я меняю Mobilebar на класс, это не работает.
console.info(this.props) возвращает {addFilter: ƒ, removeFilter: ƒ, getOptions: undefined}
<MyContext.Provider value = {{
getOptions: this.getOptions(),
getItem: this.state.items,
options: this.state.options,
removeFilter: this.removeFilter.bind(this),
addFilter: this.addFilter.bind(this)
}}>
{this.props.children}
</MyContext.Provider>
<MyContextConsumer>
{({ getOptions, addFilter, removeFilter }) =>
<Mobilebar
addFilter = {addFilter}
removeFilter = {removeFilter}
getOptions = {getOptions} />
}
</MyContextConsumer>Это функция
getOptions() {
if ((this.state.catList &&
this.state.brandList &&
this.state.colorList) &&
(this.state.catList.length != 0 &&
this.state.brandList.length != 0 &&
this.state.colorList.length != 0)) {
return [
[this.state.brandList],
[this.state.catList],
[this.state.colorList]
]
}
}Компонент
export class Mobilebar extends React.Component {
constructor(props) {
super(props)
this.options = this.props.getOptions;
this.brand = [];
this.category = [];
this.color = [];
this.i = 0;
this.options ?
(
this.brand = this.options[0][0],
this.category =his.options[1][0],
this.color = this.options[2][0]
) : this.i = 1;
}
render() {
return (
<div className = "itemlist" >
<div >
<p>T_T_T_T</p>
</div>
</div>
)
}
}Я не знаю, что делаю неправильно. Пожалуйста, помогите мне (это отлично работает, когда Mobilebar является компонентом без сохранения состояния)
Есть ли проблема с тем, как я реализую эту функцию в классе?
Почему console.info(this.props.getOptions) возвращает undefined !!!!!
Спасибо за ваше время !!
Как вы, ребята, отметили, я пробовал привязать его вот так
getOptions: this.getOptions.bind(this)
вызывая это в Mobilebar таким образом
this.options = this.props.getOptions();
но console.info(this.props.options) по-прежнему undefined
Вы вызываете его и передаете возвращаемое значение. Что может быть неопределенным из-за оператора if.
@AnkushSharma ну, я хотел просто выполнить функцию и вернуть значение. Я пробовал то, что ты сказал, но все еще не определен
@DaveNewton функция работает нормально, когда я использую ее в компоненте без сохранения состояния, хотя
Тогда вы делаете что-то по-другому, или данные другие и т. д. Вот почему у нас есть консольное ведение журнала и отладчики, если это непросто понять, взглянув на код.
@DaveNewton да, это было заявление if, спасибо !!
@xxxgrime Рад, что у вас все получилось :)



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Потому что вы выполняете функцию вместо ссылки.
Ссылайтесь на функцию так:
<MyContext.Provider value = {{
getOptions: this.getOptions.bind(this),
getItem: this.state.items,
options: this.state.options,
removeFilter: this.removeFilter.bind(this),
addFilter: this.addFilter.bind(this)
}}>
Поскольку вы используете this, вам также потребуется связать его, как в моем примере.
извините за вводящий в заблуждение заголовок, но на самом деле я просто хотел выполнить функцию в контексте, чтобы вернуть значение
вы не привязываете свои getOptions: this.getOptions (), как и другие функции, я думаю, это должно быть getOptions: this.getOptions.bind (this)