如何使用State Hook在React中编写一个语义UI单选组?

麦克尼尔(WP McNeill)

我试图在React中使用语义UI编写一个单选按钮组。我可以在语义UI的“广播”页面上获得“广播组”示例它是通过扩展编写的Component我想写同样的东西,将React组件定义为函数而不是类,并使用状态挂钩我无法使它正常工作。

我将示例修改为如下所示。

import React, {useState} from 'react'
import {Form, Radio} from 'semantic-ui-react'


export const RadioExampleRadioGroup = () => {
    const [value, setValue] = useState({});
    const handleChange = event => setValue({value: event.target.value});

    return (
        <Form>
            <Form.Field>
                Selected value: <b>{value.value}</b>
            </Form.Field>
            <Form.Field>
                <Radio
                    label='Choose this'
                    name='radioGroup'
                    value='this'
                    checked={value.value === 'this'}
                    onChange={handleChange}
                />
            </Form.Field>
            <Form.Field>
                <Radio
                    label='Or that'
                    name='radioGroup'
                    value='that'
                    checked={value.value === 'that'}
                    onChange={handleChange}
                />
            </Form.Field>
        </Form>
    )
};

当我单击单选按钮时,UI中什么都没有发生。

在调试器中运行,我看到它handleChange被调用并且似乎在做正确的事情,但是看起来像undefined传递给了checked函数。

我在这里做错了什么?

安德烈(Andriy Golubenko)

我在Codesandbox上尝试了语义UI,发现event.target.value-是未定义的,因为target-是label元素,不是input,所以您需要更改

const handleChange = event => setValue({value: event.target.value});

const handleChange = (event, {value}) => setValue({ value });

就像语义UI文档

还有一个建议。如果只需要存储一个单选按钮值,则不需要将其存储在对象中,因此可以将代码重写为:

export const RadioExampleRadioGroup = () => {
    const [value, setValue] = useState(null);
    const handleChange = (event, {value}) => setValue(value);

    return (
        <Form>
            <Form.Field>
                Selected value: <b>{value}</b>
            </Form.Field>
            <Form.Field>
                <Radio
                    label='Choose this'
                    name='radioGroup'
                    value='this'
                    checked={value === 'this'}
                    onChange={handleChange}
                />
            </Form.Field>
            <Form.Field>
                <Radio
                    label='Or that'
                    name='radioGroup'
                    value='that'
                    checked={value === 'that'}
                    onChange={handleChange}
                />
            </Form.Field>
        </Form>
    )
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在核心Java程序中添加单选按钮组,以便一次只能选择一个单选按钮?

如何在一组div之间仅选择一个div,例如单选按钮?

如何在另一个react组件中关闭语义ui模态?

如何使用ui-router将对象从1 $ state发送到另一个$ state

如何使用语义UI React从表中获取数据

如何使“选项组”单选按钮作为一个组工作(单击一个按钮将排除另一个按钮)?

如何使用this.state与react-native?

如何编写一个Ltac以将方程的两边乘以Coq中的组元素

React:Redux状态在一个效果中已更新,但同一组件中的下一个效果正在使用state的前一个值

如何基于另一个单选按钮输入将单选按钮插入闪亮的UI?

有没有更好的方法使用jquery将组中的最后一个单选按钮设置为“选中”?

如何在打字稿文件的一组单选按钮中选择一个特定的单选按钮?

如何定义一个与移动语义和复制语义一起使用的函数?

如何创建一个自定义的react hook?

如何使用r中“下一个”组的第一个值?

当时仅选择一个计划React State Hook

使用Javascript选择单选按钮组中的任何一个单选按钮

如何仅使用React选择一个单选按钮

如何在R中编写一个循环,以选择每个id组越来越多的行数?

如何使用C#从值另一个表中设置gridcontrol devexpress中的Check Repository单选组

VB如何动态创建一个组框以显示和分组数组中的单选按钮?

React:如何在后续的 setState() 调用中使用 this.state?如何强制更新 this.state?

如何编写代码,以便在使用 django 的模型中只选择一个单选按钮。?

如何在另一个中使用语义 ui 添加 div?

如何在需要另一个 hoc 的 React 中编写 HOC?

如何将动态加载的单选按钮放入一个组中?

在 React Hook 的 State 对象中添加一个新值

如何在 React 中正确使用 State()

当每次新页面加载时其 ID 都发生变化时,如何使用 selenium 选择单选按钮组中的第一个选项