在 fresh 中输入输入时无法更新状态

Impossible to update state while typing in input in fresh

提问人:Mei Olya 提问时间:9/16/2022 最后编辑:jsejcksnMei Olya 更新时间:9/16/2022 访问量:372

问:

我是 Deno 的 Fresh 新手,我正在尝试在输入中键入文本时更新 Preact 组件的状态。

export default function Calculous(props: CalculousProps) {
  const [input, setInput] = useState<string>('');

  const onSubmit = (event: h.JSX.TargetedEvent<HTMLFormElement>) => {
    event.preventDefault();
    console.log(input);
  }

  useEffect(() => {
    console.log(input);
  }, [input])

  return (
      <form onSubmit={onSubmit}>
        <input type="text" value={input} onChange={(e) => setInput(e.target.value)} />
        <button disabled={isNaN(Number(input))} type="submit">Next</button>
      </form>
  );
}

但是,当我在组件上键入文本时,它不会重新渲染,直到我取消对输入的焦点。你知道如何触发重新渲染来更新我的状态吗?

感谢您的帮助

JavaScript 服务器端 deno preact freshjs

评论


答:

1赞 jsejcksn 9/16/2022 #1

将 Preact 与输入元素一起使用时,通常应使用 onInput 而不是 onChange

React 选择将事件侦听器回调属性的名称用于更改输入事件。在这种情况下,Preact 的 API 更具语义性,并且更符合规范。onChange

评论

0赞 Mei Olya 9/16/2022
好好使用函数,非常感谢onInput