首页 > 解决方案 > HTML onSubmit / onClick 处理函数可以有除事件之外的另一个参数吗?

问题描述

我面临一些情况onClickonSubmit功能需要eventparameter. 我可以在 react 或 vanilla html 标签中使用它吗?

或者,只是使用其他功能做一些副作用?


const CustomFC = ({}) => {
  const [ id, setId] = useState("");
  const [password, setPassword] = useState("");
  
  type FormParams = {
    id: string;
    password: string; 
  }
  const customClickHandler = useCallback((params: FormParams) => 
  {
    dispatch(params); 
  }, [id, password]);

  const onChangeId = useCallback((id) => setId(id),[]);
  const onChangePassword = useCallback((password) => setPassword(password),[]);   
  
  <Form
     onClick ={customClickHandler}
     onChange={{onChangeId, onChangePassword}}
  />
}

// Form.tsx
const Form = ({
  onSubmit,
  onChange,
}) => {
  const { onChangeId, onChangePassword } = onChange; 
  const handleSubmit = ( e, params ) => { // <- can this be possible? 
    e.preventDefault();
    onSubmit(params);
  }
  return (
    <form onSubmit={handleSubmit}>
      <input ... />
      <input ... />
    </form>
  )
}
  

标签: javascriptreactjs

解决方案


是的,您可以这样做:

const handleClick = (event, parameter) => {
   // do stuff
}

然后像这样调用它:

onClick={(event) => handleClick(event, parameter)}

这有帮助吗?

在您的情况下,它将是:

  return (
    <form onSubmit={(event) => handleSubmit(event, parameter)}>
      <input ... />
      <input ... />
    </form>
  )

推荐阅读