首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Onclick打开组件

用Onclick打开组件
EN

Stack Overflow用户
提问于 2019-04-10 21:12:36
回答 1查看 50关注 0票数 1

我需要打开一个组件时,我点击一个打赌的名称,但当我做什么都没有发生。我不知道我还需要什么才能成功,希望有人能帮我。

代码语言:javascript
复制
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的条件

代码语言:javascript
复制
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>
                );
            });
        }

我需要打开组件时,我点击一个打赌的名称,以显示每个赌注的入口。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-10 21:27:43

您从onClick处理程序返回的内容将不会呈现。您需要以这样的方式更新组件状态,以便在单击组件后为特定的赌注呈现组件时,可以派生组件。

其中一种方法是将一个名为isClicked的新属性添加到WagerTypes数组中的每个对赌对象中,并在单击时在true和false之间切换该属性。

示例

代码语言:javascript
复制
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>
        ))}
      </>
    );
  }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55621402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档