reactjs 对React中的值使用布尔值< option>

5sxhfpxr  于 2023-02-03  发布在  React
关注(0)|答案(4)|浏览(367)

我将“isAvailable”prop存储为布尔值,但当handleChange函数运行时,它将我的布尔变量转换为字符串。是否可以保留“isAvailable”布尔值而不创建另一个函数来处理更改?
下面是我的渲染选择框:

<select
    type='text'
    name="isAvailable"
    className='itemAvailability form__input'
    value={this.props.details.isAvailable}
    onChange={this.handleChange}
>
    <option>Availability</option>
    <option value={true}>Available</option>
    <option value={false}>Not Available</option>
</select>

这里是handleChange函数

handleChange = (e) => {
    const updatedItem = {
        ...this.props.details,
        [e.currentTarget.name]: e.currentTarget.value
    }

    this.props.updateItem(this.props.index, updatedItem);
}
uoifb46i

uoifb46i1#

下面是我为那些遇到同样问题的人提供的解决方案。我已经更新了handleChange函数,如下所示。

handleChange = (e) => {
    let updatedValue = e.currentTarget.value;

    if (updatedValue === "true" || updatedValue == "false") {
        updatedValue = JSON.parse(updatedValue);
    }

    const updatedItem = {
        ...this.props.details,
        [e.currentTarget.name]: updatedValue
    }

    this.props.updateItem(this.props.index, updatedItem);
}
ygya80vv

ygya80vv2#

HTML option元素的value属性只能是字符串。如果要获取布尔值,可能需要设置radio input field

mwecs4sa

mwecs4sa3#

很晚了,但是我想我应该展示一下我是如何处理类似的事情的,一旦我的选项进入mongo数据库,它的值就被设置为一个布尔值,但是在页面刷新之前redux将选项存储为一个字符串,所以添加了一个字符串检查来显示同时的变化。

onChangeHandler = (event) => {
    this.props.userInfoUpdate(
        event.target.name, event.target.value
    )
}


        const display_address = () => {
        if(!this.props.display_address || this.props.display_address === 'true'){
            return (
                <select name='display_address' onChange={this.onChangeHandler} >
                    <option value={true}>Yes</option>
                    <option value={false}>No</option>                    
                </select>
            )
        }else{
            return (
                <select name='display_address' onChange={this.onChangeHandler} >
                    <option value={false}>No</option>
                    <option value={true}>Yes</option>                                            
                </select>
            )
        }
    }
zc0qhyus

zc0qhyus4#

[2023]有一个变通方案,您可以检查当前选定的值,并根据该值返回最终值。
例如:对于上面的代码

<select
    type='text'
    name="isAvailable"
    className='itemAvailability form__input'
    value={this.props.details.isAvailable}
    onChange={this.handleChange}
>
    <option>Availability</option>
    <option value={true}>Available</option>
    <option value={false}>Not Available</option>
</select>

在您要提交的数据中,您可以具有:

const dataToSubmit= {
    isAvailable:
      formdata.isAvailable === "true"
        ? true`enter code here`
        : formdata.isAvailable === "false"
        ? false
        : null,
  };

相关问题