У меня есть класс, в котором есть данные, и я пытаюсь отправить данные в качестве параметров для элемента выбора в дочернем элементе.
Родитель
constructor(){
super();
this.state = {
value: [{key: '1', name: 'aaa'}, {key: '2', value: 'bbb'}],
}
}
render(){
const childProps = {
getVal(){
const val = this.state.value;
return val.map((item) => {
return (<option value = {item.name}>{item.name}</option>);
});
}
};
return(
//codes
<Child {...childProps} />
)
}
ребенок
export const Child = ({ getVal }) => (
<select>
{getVal}
</select>
);
Child.propTypes = {
getVal: PropTypes.func,
};
Но я не получаю никаких значений по выбранным мной параметрам. Там написано, что не найдено. Может кто-нибудь мне помочь? Спасибо





Попробуйте это, вы не вызываете функцию.
export const Child = ({ getVal }) => (
<select>
{getVal()}
</select>
);
Child.propTypes = {
getVal: PropTypes.func,
};
Можете ли вы поделиться примером песочницы того, чего вы пытаетесь достичь. Смотрю вопросы вроде очень простые, но выяснить не удалось. песочница может помочь
Вы можете попробовать, как показано ниже
constructor(){
super();
this.state = {
value: [{key: '1', name: 'aaa'}, {key: '2', value: 'bbb'}],
}
this.getVal = this.bind.getVal(this)
}
render(){
getVal(){
const val = this.state.value;
return val.map((item) => {
return (<option value = {item.name}>{item.name}</option>);
});
}
return(
//codes
<Child getVal = {this.getVal} />
)
}
Получить функцию getVal как реквизит
export const Child (
<select>
{this.props.getVal}
</select>
);
Не рекомендуется добавлять функции в метод рендеринга. Ведь всякий раз, когда рендеринг будет вызван, функции будут построены снова. Итак, вы можете сделать это так:
constructor(){
super();
this.state = {
value: [{key: '1', name: 'aaa'}, {key: '2', value: 'bbb'}],
}
}
getVal = () => this.state.value.map((item) => (
<Option value = {item.name} key = {item.name}>{item.name}</Option>
));
render(){
return(
<Child getVal = {() => this.getVal} />
)
}
ребенок
export const Child = ({ getVal }) => (
<select>
{getVal()}
</select>
);
Child.propTypes = {
getVal: PropTypes.func,
};
getVal - это функция, ее нужно вызвать, например:
{getVal()}, примечание =====>()