【问题标题】:set option label of selected value in React在 React 中设置选定值的选项标签
【发布时间】:2019-10-14 23:06:55
【问题描述】:

使用 React 我想为我的选择设置一个默认值并在选项中显示标签。 这是我到目前为止所构建的:

<Select showSearch style = {{ width: '100%' }}
                   placeholder = "Selection la choix de votre numéro de téléphone "
                   optionFilterProp = "children"
                   onChange = {handleChangeSelect}

                   defaultValue = {extraitMP3[ids].Mp3[idJson].visibilite}
                   onFocus = {handleFocusSelect}
                   onBlur = {handleBlurSelect}
                   filterOption = {(input, Option) => Option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}>

    <Option value = "1"> Visible dans la recherche et sur ma fiche </Option>
    <Option value = "2"> Visible sur ma fiche uniquement </Option>
    <Option value = "3"> Masqué </Option>
</Select>

现在的结果显示 {extraitMP3[ids].Mp3[idJson].visibilite} 等于选项值之一,但我要显示的是选项标签。任何有助于将显示的内容从值更改为默认值中的标签

【问题讨论】:

    标签: javascript html reactjs select default-value


    【解决方案1】:

    您可以将选项存储在地图中,然后查找选项的文本:

    在组件模块中的某个位置,但不在组件本身中(无需一直重新创建它):

    const selectOptions = new Map([
        ["1", "Visible dans la recherche et sur ma fiche"],
        ["2", "Visible sur ma fiche uniquement"],
        ["3", "Masqué"],
    ]);
    

    然后在渲染的时候查一下:

    defaultValue={selectOptions.get(extraitMP3[ids].Mp3[idJson].visibilite)}
    

    另外,使用地图来呈现选项。所以渲染代码看起来像:

    <Select
                showSearch
                style={{ width: '100%' }}
                placeholder="Selection la choix de votre numéro de téléphone "
                optionFilterProp="children"
                onChange={handleChangeSelect}
    
                defaultValue={selectOptions.get(extraitMP3[ids].Mp3[idJson].visibilite)}
                onFocus={handleFocusSelect}
                onBlur={handleBlurSelect}
                filterOption={(input, Option) => Option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
              >
              {[...selectOptions].map(([value, label]) => <Option value="{value}"> {label} </Option>)}
    </Select>
    

    【讨论】:

    • 我完全按照你说的做了,我得到了:TypeError: selectOptions.entries(...).map is not a function
    • @Ahmed - 我的错,我忘了传播它们。如果传播,则不需要entries。查看更新后的答案(所有不同的是我们输出选项的位置)。
    • 现在它正在工作但它没有设置默认值所以我做了一个:{console.log('Select Options',selectOptions.get(extraitMP3[ids].Mp3[idJson].visibilite))} 它是未定义的并且 {console.log('Select Options',extraitMP3[ids].Mp3[idJson ].visibilite)} 正在给我结果
    • @Ahmed - 这告诉我们extraitMP3[ids].Mp3[idJson].visibilite 不是=== 匹配的值。 (映射的get 需要=== 匹配键。)也许它是一个数字而不是一个字符串;如果是这样,请更改地图以使用数字而不是字符串作为键。你是唯一可以检查的人。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 2018-06-22
    • 2012-08-14
    • 1970-01-01
    • 2019-09-23
    相关资源
    最近更新 更多