Ken428965 2023-03-14 00:42 采纳率: 53.4%
浏览 14
已结题

react,如何实现选中某个值后显示指定项,没有选中某个值则不显示指定项?

react版本如下:

img

已写的部分代码:

import React, { useState } from 'react'
import {
  List,
  Form,
  Input,
  Picker,
  ImageUploader,
  TextArea,
  Modal,
  Toast,
  Button
} from 'antd-mobile'

const roomTypeData = [
      { label: '三室', value: 'ROOM|20903a' },
      { label: '四室', value: 'ROOM|ce2a5d' }
]

const RentAdd = () => {
    const [huxingvisible, setHuxingVisible] = useState(false)
    // 加分
    const [price,setPrice] = useState('')
    // 户型
    const [roomType,setRoomType] = useState('')

    function Huxing() {
    return (
        <Picker
          title='户&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;型'
          columns={[roomTypeData]}
          visible={huxingvisible}
          mouseWheel={true}
          popupClassName={styles.huxing}
          onClose={() => {setHuxingVisible(false)}}
          onConfirm={(v = []) => {
            let item = roomTypeData.find(r => r.value === v[0]) || {}
            setRoomType(item.value)
          }}
        />
    )
  }

//...

    return (
          <Form>
                 <Form.Item
                        label='户&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;型'
                        extra={roomType.length ? roomTypeData.filter(item=>item.value===roomType)[0].label : '请选择'}
                        arrow={true}
                        onClick={() => {
                            setHuxingVisible(true)
                        }}
                 >
                       {Huxing()}
                  </Form.Item>

                  {/* 如果户型的选中值为四室,则显示加分项,否则不显示加分项 */}
                  {roomTypeData.map(item => item.label == '四室' ? <Form.Item key={item.label} label='加&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;分' name='zujin' extra="积分"}>
                        <Input
                            placeholder="请输入大于零的整数"
                            style={{'--font-size': '14.0625px','--placeholder-color': '#999999'}}
                            value={price}
                            clearable
                            maxLength={11}
                            onChange={val => {setPrice(val)}}
                         />
                    </Form.Item> : '' )}
          </Form>
    )
}

希望实现如下效果,如果户型的选中值为四室,则显示加分项,否则不显示加分项:

img

img

目前效果如下,无论户型的选中值为三室或四室,加分项一直显示着

请问代码出了什么问题?如何修改?恳请在现有代码基础上展示说明,谢谢。

  • 写回答

2条回答 默认 最新

  • 归来巨星 前端领域新星创作者 2023-03-14 09:36
    关注

    前面加个 && 运算符

    {
    roomType==='ROOM|ce2a5d'&&roomTypeData.map(item => item.label == '四室' ? <Form.Item key={item.label} label='加&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;分' name='zujin' extra="积分"}>
                            <Input
                                placeholder="请输入大于零的整数"
                                style={{'--font-size': '14.0625px','--placeholder-color': '#999999'}}
                                value={price}
                                clearable
                                maxLength={11}
                                onChange={val => {setPrice(val)}}
                             />
                        </Form.Item> : '' )}
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月14日
  • 已采纳回答 3月14日
  • 修改了问题 3月14日
  • 创建了问题 3月14日

悬赏问题

  • ¥20 iOS绕地区网络检测
  • ¥15 python验证码滑块图像识别
  • ¥15 根据背景及设计要求撰写设计报告
  • ¥15 QT6颜色选择对话框显示不完整
  • ¥20 能提供一下思路或者代码吗
  • ¥15 用twincat控制!
  • ¥15 请问一下这个运行结果是怎么来的
  • ¥15 单通道放大电路的工作原理
  • ¥30 YOLO检测微调结果p为1
  • ¥15 DS18B20内部ADC模数转换器