为了账号安全,请及时绑定邮箱和手机立即绑定

在react中使用RadioGroup时如何获取完整的事件对象

在react中使用RadioGroup时如何获取完整的事件对象

呼如林 2023-07-14 15:03:45
onChange大家好,我遇到了一个小问题,我在 React 中使用 RadioGroup,我的问题是我无法获取事件对象,而是只获取值,在我的情况下,我想在事件触发时获取名称和值 <RadioGroup name="distance" onChange={handleChange}>     <Radio value="0.5">0.5</Radio>     <Radio value="2000">1</Radio>     <Radio value="3000">2</Radio>     <Radio value="4000">3</Radio>     <Radio value="5000">4</Radio> </RadioGroup> const handleChange = (e) => {    console.log(e);//getting only the value     };
查看完整描述

3 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

我没有尝试重现你的情况,但尝试这样的事情:

onChange={e => handleChange(e)}

比CB中的

const handleChange = (e, value) => {console.log(e, value)}

此致!


查看完整回答
反对 回复 2023-07-14
?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

next version (v1.x)和stable version v0.xof有两个区别chakra-ui


<RadioGroup />在(v0.x)中


onChange?: (

    event: React.ChangeEvent<HTMLInputElement>,

    value: IRadio["value"],

  ) => void;

和<RadioGroup />(v1.x)


onChange?(nextValue: StringOrNumber): void;

如果您想参加该活动,您可以降级您的版本chakra-ui


查看完整回答
反对 回复 2023-07-14
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

我遇到了同样的问题,因为我希望我handleChange在任何类型的领域工作,我已经这样设置了。


const [formData, setFormData] = React.useState({

    inputField: "",

    checkBoxField: false,

    emailField: "",

    distance: "" /* radioField */

})



function handleChange(event) {

    const { name, value, type, checked } = event.target

    setFormData(prevFormData => {

        return {

            ...prevFormData,

            [name]: type === "checkbox" ? checked : value

        }

    })

}

作为解决方法,我编写了一个返回假事件的函数。


function createEvent(name, value) {

    return {

        target: {

            name: name,

            value: value,

            type: "radio",

            checked: false

        }

    }

}

然后我的RadioGroup会是这样的:


<RadioGroup

    name="distance"

    onChange={

        function(value) {

            props.handleChange(

                createEvent("distance", value)

            )

        }

    }

>

    <Radio value="0.5">0.5</Radio>

    <Radio value="2000">1</Radio>

    <Radio value="3000">2</Radio>

    <Radio value="4000">3</Radio>

    <Radio value="5000">4</Radio>

</RadioGroup>

但是,是的,将name="distance"asRadioGroup的属性不再重要了。如果我们只需要 的一些属性event.target,但仍然希望它们能够尽快添加对完整事件对象的访问权限,则可以使用。


查看完整回答
反对 回复 2023-07-14
  • 3 回答
  • 0 关注
  • 126 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信