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

如何通过 React hooks onChange 事件方法传递附加参数

如何通过 React hooks onChange 事件方法传递附加参数

芜湖不芜 2023-03-24 14:08:08
我需要输出修改后的值。假设我正在输入:hello world,我需要这个结果:“hello world”(带引号)。我可以用 class-component 来做,但我用 Hooks 失败了。我的代码有什么问题?const { useState } = React;const App = () => {  const [user, setUser] = useState('');  const onChange = (a, b, event) => {    setUser(a + event.target.value + b);  };  return (    <form>      <h3>Username is: {user}</h3>      <input        type="text"        value={user}        onChange={onChange.bind(null, '"', '"')} />    </form>  );};ReactDOM.render(<App />, document.getElementById("root"));<div id="root"></div><script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.13.0/umd/react.production.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.13.0/umd/react-dom.production.min.js"></script>
查看完整描述

3 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

问题

由于onChange在每次按键时运行,因此您将quotation标记附加到每个按键。


解决方案

而不是把你的引号放在你的状态上。在 JSX 中附加引号。


import React, { useState } from 'react';


const App = () => {

  const [user, setUser] = useState('');


  const onChange = (event) => {

    setUser(event.target.value)

  };


  return (

    <form>

      <h3>Username is: {user ? `"${user}"`: ''}</h3>

      <input

        type="text"

        value={user}

        onChange={onChange} />

    </form>

  );

};

export default App;

从输入字段传递额外参数


<input

   onChange={e => onChange(e, 'hello, 'world')}

/>


查看完整回答
反对 回复 2023-03-24
?
手掌心

TA贡献1942条经验 获得超3个赞

When you use arrow functions there is no need to bind. 

 const   onChange = (val)=>{

    console.log(val)// comment

    }


    <input type="text"

       onChange={() => onChange("comment")}

    />


查看完整回答
反对 回复 2023-03-24
?
慕斯王

TA贡献1864条经验 获得超2个赞

我使用 coffeescript,你可以将 -> 视为函数或 =>,如果我们通过循环将参数传递给功能组件中的 onClick 事件处理程序:


onClick = (n, x) -> ->

    setcheckindex n

    x()

<Boxr onClick={onClick n, x.onClick} /> for x,n in g

我已经通过 n 发送了循环索引,并通过 x.onClick 发送了一个函数


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

添加回答

举报

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