1 回答
TA贡献1895条经验 获得超7个赞
一些注意点:
在里面使用箭头函数useCallback。
无需在内部debounce和处理程序函数中返回任何内容。
import React, { useCallback } from "react";
import "./styles.css";
import { TouchableOpacity, Text } from "react-native";
import { debounce } from "lodash";
const debounceAction = debounce(e => {
console.log(e); // "My Button clicked"
alert(e); // "My Button clicked"
}, 500);
const MyButton = props => {
const { onPress } = props;
const delayedOnPress = useCallback(e => debounceAction(e), []);
const onPressed = () => {
delayedOnPress(onPress);
};
return (
<TouchableOpacity onPress={onPressed}>
<Text>Button</Text>
</TouchableOpacity>
);
};
export default function App() {
return (
<div className="App">
<MyButton onPress="My Button clicked" />
</div>
);
}
更新
如果我们想从父级传递一个自定义函数作为道具:
const debounceAction = debounce(e => {
e(); // customized function been passed
}, 500);
...
export default function App() {
const customizedFunction = () => { // customized function
alert("test");
};
return (
<div className="App">
<MyButton onPress={customizedFunction} /> // notice no `()` here
</div>
);
}
添加回答
举报