javascript - React 中表单元素的委托(delegate)

标签 javascript reactjs ecmascript-6

我正在尝试学习 React 。我有很好的 JS 知识,但知道我无法处理 React 中的简单情况。我已经在表单元素上放置了一个事件,该元素有 2 个子元素,并且我正在尝试执行某些操作(在本例中这并不重要),因此我编写了一个带有其事件对象的处理程序。我实际上知道触发事件的最深元素称为“目标”或“源”元素,并且可作为 event.target 使用。在我的例子中, event.target 不是一个已提交的 button 元素 ,而是一个带有事件的 form 元素。所以我无法理解这种情况。

这是我的代码`

    const onFormSubmit = (event) => {
    event.preventDefault();

    const option = event.target.elements.option.value;
}

    let template = (
        <div>
            <form onSubmit={onFormSubmit}>
                <input typa='text' name='option'/>
                <button>Add Option</button>
            </form>
        </div>
    );

我认为 event.target 应该是按钮元素,但它不是按钮元素,而是表单元素。

最佳答案

您可以尝试以下操作:

  1. 设置初始状态{ optionInput: '' }

  2. 将处理程序 onChange 添加到您的输入并将值存储在状态中

  3. 在需要时从状态获取值(onFormSubmit)

    const onFormSubmit = (event) => {
        event.preventDefault();
        const option = this.state.optionInput;
    }
    
    const handleChange = (event) => {
         const {value} = event.target
         // Now set state - setState() 
         this.setState({ optionInput: value })
    };
    
    let template = (
        <div>
            <form onSubmit={onFormSubmit}>
                <input typa='text' value={this.state.optionInput} name='option' onChange={handleChange}/>
                <button>Add Option</button>
            </form>
        </div>
    );
    

也许您必须使用 this 关键字重构内容。因为我看不到你是否使用类 Component 或者更实用的方式

关于javascript - React 中表单元素的委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50758945/

相关文章:

javascript - Facebook 使用 javascript sdk 在我的时间线上分享自定义故事

javascript - 选择数组成为对象属性

javascript - 如何使用短路评估在内联条件后渲染多个元素?

reactjs - 用于 react-native-web 的 DatePicker 组件原生处理

javascript - 用于对象叠瓦的漂亮 JavaScript 模式(模拟多重继承)

javascript - 使用 Node js 创建 Mongodb ObjectId 时如何捕获错误

javascript - react : componentDidMount + setState not re-rendering the component

javascript - ESLint 解析错误 : Unexpected token . .. 仅在一个剩余运算符上

javascript - 是否可以包含取决于用户是否安装了某个软件包的功能(可选功能)

javascript - 将选中的表行添加到电子邮件正文