Мне нужно открыть компонент, когда я нажимаю на название ставки, но когда я ничего не делаю. Я не знаю, что еще мне нужно, чтобы заставить его работать, надеюсь, кто-то может мне помочь.
wagerSwitch(param) {
switch(param) {
case 'Win':
return <WPS/>;
case 'Place':
return <WPS/>;
case 'Show':
return <WPS/>;
case 'Exacta':
return <Exacta/>;
case 'Quinella':
return <Quinella/>;
case 'Trifecta':
return <Trifecta/>;
case 'Superfecta':
return <Superfecta/>;
case 'Double1':
return <Double/>;
case 'FDouble2':
return <Double/>;
case 'Pick3-1':
return <Pick3/>;
case 'Pick3-3':
return <Pick3/>;
case 'Pick4-1':
return <Pick4/>;
case 'Pick4-4':
return <Pick4/>;
case 'Pick6-1':
return <Pick6/>;
case 'Pick6-6':
return <Pick6/>;
default:
return <WPS/>;
}
}
Условие с onclick в моем методе рендеринга
const wagers = this.state.WagerTypes;
const wagerList= [];
if (wagers){
wagers.forEach((wager) =>{
wagerList.push(
<span className = "label label-default" style = {{cursor: 'pointer'}} key = {wager['name']}onClick = {() => this.wagerSwitch(wager.name)}>
{wager.name}
</span>
);
});
}
Мне нужно открыть компонент, когда я нажимаю на название ставки, чтобы показать записи каждой ставки
не могли бы вы сделать пример... пожалуйста



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


То, что вы возвращаете из обработчика onClick, не будет отображаться. Вам нужно обновить состояние компонента таким образом, чтобы вы могли определить, должен ли компонент отображаться для конкретной ставки после того, как он был нажат.
Один из способов сделать это — добавить новое свойство с именем, например. isClicked к каждому объекту ставки в массиве WagerTypes и переключать это свойство между true и false по клику.
Пример
class App extends React.Component {
state = {
WagerTypes: [
/* ... */
]
};
wagerSwitch(param) {
// ...
}
onClick = wager => {
this.setState(({ WagerTypes }) => ({
WagerTypes: WagerTypes.map(w =>
w === wager ? { ...w, isClicked: !w.isClicked } : w
)
}));
};
render() {
return (
<>
{this.state.WagerTypes.map(wager => (
<span
className = "label label-default"
style = {{ cursor: "pointer" }}
key = {wager.name}
onClick = {() => this.onClick(wager)}
>
{wager.name}
{wager.isClicked ? wagerSwitch(wager.name) : null}
</span>
))}
</>
);
}
}
Я не могу добавить свойство isClicked, потому что получаю данные из API
@JoseCarlosRodriguezArrieta Вы можете добавить его, прежде чем привести данные API в состояние. this.setState({ WagerTypes: response.data.map(w => ({ ...w, isClicked: false })) });
То, что вы возвращаете из обработчика
onClick, не будет отображаться. Вам нужно обновить состояние компонента таким образом, чтобы вы могли определить, должен ли компонент отображаться для конкретной ставки после того, как он был нажат.