美文网首页
react 三目运算或if else的方式加载指定标签

react 三目运算或if else的方式加载指定标签

作者: CoderZb | 来源:发表于2020-08-07 16:41 被阅读0次

    需求一

    从网络请求到的数据中,判断返回的某个值(例如isAward),如果为中奖者,就取前者(白底蓝图标),否则取后者(蓝底白图标) 。

    image.png

    做法:可以采用三目运算的做法就可以实现该需求,大致就是{item.isAward ? (A标签):(B标签)}这种写法,以下为例子:

     render() {
        const tba = this.state.Dates.map((item, index) => {
          const tabs = {
            key: index,
            id: item.id,
            userName: item.userName,
            operate: (
              <div className="right_operate">
                <ul>
                  {/* 如果为中奖者,就取前者(白底蓝图标),否则取后者(蓝底白图标) */}
                  {item.isAward ? (
                    <li
                      style={{
                        backgroundColor: "#3694ff",
                        border: "1px solid #3694ff"
                      }}
                      onClick={() => this.setWinnerFunc(item.userId,item.userName)}
                    >
                      <span
                        className="iconfont icon-cup"
                        style={{ color: "#fff" }}
                      ></span>
                    </li>
                  ) : (
                    <li
                      style={{
                        backgroundColor: "#fff",
                        border: "1px solid #3694ff"
                      }}
                      onClick={() => this.setWinnerFunc(item.userId,item.userName)}
                    >
                      <span
                        className="iconfont icon-cup"
                        style={{ color: "#3694ff" }}
                      ></span>
                    </li>
                  )}
                </ul>
              </div>
            )
          };
          return tabs;
        });
    
        return (
          <Fragment>        
              <Table
                size="small"
                columns={this.state.columns}
                pagination={{ total: +this.state.totalData, defaultCurrent: 1 }}
                rowSelection={rowSelection}
                dataSource={tba}
                onChange={this.onPageNum}
              />
          </Fragment>
        );
      }
    

    需求二

    上传图片前,显示文字;上传文件后,显示图片,且点击图片后也还可以实现上传。

    • 上传前


      image.png
    • 上传后


      image.png

    做法:可以采用if else的做法就可以实现该需求,大致就是if(有图片){展示图片} else{隐藏图片}这种写法,以下为例子:

      render() {
        var {imagePreviewUrl,showImg} = this.state;
        var imagePreview = null;
        if (imagePreviewUrl) {
          imagePreview = ( <label style={{backgroundColor:"red"}} for="avatarFor">< img style={{width:'80px',height:'80px'}} src={imagePreviewUrl} /></label>);
          showImg = 'none';
        } else {
          showImg = 'block';
        }
    
        return (
          <Fragment>
              <p style={{ margin: "0" }}>上传打款凭证:</p>
                <input id="avatarFor" style={{display:'none'}} type="file" onChange={(e)=>this.handleImageChange(e)}/>
                {imagePreview}
                <label style={{color:"#1890FF",border:"1px dashed #1890FF",padding:'3px 10px ',display:showImg}} for="avatarFor">+点击上传图片</label>
          </Fragment>
        );
      }
      
    

    相关文章

      网友评论

          本文标题:react 三目运算或if else的方式加载指定标签

          本文链接:https://www.haomeiwen.com/subject/cszfdktx.html