【发布时间】:2021-07-13 00:34:11
【问题描述】:
我是 react native 的初学者,最近在 onPress 属性中直接放一个函数时遇到了无限循环。在某些情况下,直接函数调用有效,但在这种情况下,我必须使用匿名函数。 当我使用匿名函数时到底发生了什么? 为什么不会导致死循环?
export default function App()
{
const [state, setState] = useState({
searchQuery: "",
active: false,
data: []
});
function setSearchQuery(val) {
setState({...state, searchQuery: val});
}
function setActive(val) {
setState({...state, active: val});
}
function setData(val) {
setState({...state, data: val});
}
function keyboardDissmiss() {
setState({...state, active: false});
Keyboard.dismiss();
}
return (
<TouchableWithoutFeedback onPress={keyboardDissmiss}>
<SafeAreaView style={GlobalStyles.droidSafeArea}>
<View style={{height: 50,alignItems: 'center', backgroundColor: "blue"}}>
<Text>{state.searchQuery}</Text>
</View>
<View style={{flex:1}}></View>
<NavBar state={state.active} style={styles.container} onPress={() => setActive(true)}>
{state.active &&
<SearchBar
value={state.searchQuery}
onBlur={() => setActive(false)}
search={setSearchQuery}
/>}
</NavBar>
</SafeAreaView>
</TouchableWithoutFeedback>
);
}
【问题讨论】:
标签: javascript react-native frontend react-functional-component