【发布时间】:2022-01-13 02:47:05
【问题描述】:
我正在使用 Ant 设计,他们有一个名为 Switch 的组件,Switch 有一个自定义事件处理程序
import "./styles.css";
import "antd/dist/antd.css";
import { Switch } from "antd";
import { useState } from "react";
export default function App() {
const [status, setStatus] = useState(true);
const handleChange = (e) => {
// e is a boolean variable, true or false
console.log(e);
setStatus(e);
};
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
<h2>Start editing to see some magic happen!</h2>
<Switch checked={status} onChange={handleChange}></Switch>
</div>
);
}
我对这种语法有很多疑问
- 会
onChange={handleChange}
等价于
onChange={(e) => handleChange(e)}
- 如果因为某种原因,我只能写了
onChange={handleChange}
我怎样才能将 real 事件处理程序传递给handleChange 来做一些stopPropagation 之类的事情
const handleChange = (e, reale) => {
reale.stopPropagation()
setStatus(e);
};
简单的codesandbox就明白我说的了。
【问题讨论】:
-
1.是的,它们是一样的。 2.你可以简单地写你所拥有的。这有什么问题吗?
-
@cjmling 嗯,我不知道如何将真实事件句柄传递给handleChange函数,该怎么做?
-
你不需要。你可以简单地做
onChange={handleChange},你应该有真正的变量作为事件处理程序。 codesandbox.io/s/tender-bird-5m11n?file=/src/App.js。你想传递不同的事件处理程序吗?如果是这样,那么像 Tanisq 那样做。
标签: javascript reactjs function antd