Это, вероятно, относится не только к React Native, но я хочу понять, что здесь происходит.
Возьмите следующие 5 строк кода.Строка 3 приведет к тому, что приложение не будет отображаться в Expo.
<Button onPress={this.filterOfficeTypePitt} title="Pitt" />
<Button onPress={this.filterOfficeTypeAtl} title="Atl" />
<Button onPress={this.filterOfficeType("pitt")} title="DOES NOT WORK" />
<Button onPress={(e) => this.filterOfficeType("pitt")} title="Pitt" />
<Button onPress={(e) => this.filterOfficeType("atl")} title="Atl" />
Я немного понимаю, что происходит в каждой строке.
Строка 1 и 2: прямой вызов метода внутрикомпонент.
Строка 3: Попытка сделать то же самое и передать значение.Это приводит к сбою приложения.Причина - превышение максимальной глубины.
Строка 4 и 5: я думаю, что это функция, передающая функцию anon и неожиданно позволяющая мне добавить строковое значение.
Как только я использовал 4 и5, я смог использовать один метод, и он отфильтровал список.Когда я использовал 1 и 2, у меня должен был быть уникальный метод для каждого.
Я просто хочу понять, что происходит лучше и почему именно # 3 не будет работать.Я уверен, что мне нужно по крайней мере лучшее понимание функций стрелок.
Включая код для вспомогательной функции.Он в основном получает данные из массива индекса и помещает их в компонент FlatList.
filterOfficeType(officetype){
let newarray = [];
this.state.fulldataSource.forEach((element, index) => {
if(element.office === officetype) {
newarray.push(element);
}
});
this.setState({
dataSource:newarray,
office:officetype
});
}
filterOfficeTypePitt = () => {
this.filterOfficeType("pitt");
}
filterOfficeTypeAtl = () => {
this.filterOfficeType("atl");
}