React Native - 为什么函数会自动触发?
React Native - why do functions trigger automaticly?
首先让我说一下我刚开始学习 React Native,为此,我会尽量说清楚。
上下文:
我正在尝试创建一个简单的符号 in/sign 向上页面,我有一个主屏幕,其中包含 2 个具有 React 状态的输入(用户名和密码),当我按下按钮时,我需要将其传递给服务,所以代码如下所示:
function HomeScreen(props) {
const [userName, onChangeUserNameText] = React.useState(null);
const [password, onChangePasswordText] = React.useState(null);
...
return (
<TextInput
...
onChangeText={onChangeUserNameText}
value={userName}
/>
<TextInput
...
onChangeText={onChangePasswordText}
value={password}
/>
<Button
...
onPress={SignIn(userName, password)}
/>
)
SignIn(...) 方法是从另一个我称为 home.service 的文件中导出的,该文件应该处理我的主屏幕和 API 调用之间的通信,我还放入了一些日志那个函数。
问题:
出于某种原因,每当我加载应用程序或更新我的任何输入时,当我按下 sing in 按钮时应该执行的功能正在执行
加载中
更改文本
我在这里错过了什么?
Edit/Conclusion :
谢谢你@Robin Zigmond,问题就像这位绅士所说的那样,我在 onPress 事件中调用我的函数的方式:
<Button
...
onPress={() => SignIn(userName, password)}
/>
需要添加回调,否则SignIn会一直执行:
function HomeScreen(props) {
const [userName, onChangeUserNameText] = React.useState(null);
const [password, onChangePasswordText] = React.useState(null);
...
return (
<TextInput
...
onChangeText={onChangeUserNameText}
value={userName}
/>
<TextInput
...
onChangeText={onChangePasswordText}
value={password}
/>
<Button
...
onPress={() => SignIn(userName, password)}
/>
)
}
首先让我说一下我刚开始学习 React Native,为此,我会尽量说清楚。
上下文:
我正在尝试创建一个简单的符号 in/sign 向上页面,我有一个主屏幕,其中包含 2 个具有 React 状态的输入(用户名和密码),当我按下按钮时,我需要将其传递给服务,所以代码如下所示:function HomeScreen(props) {
const [userName, onChangeUserNameText] = React.useState(null);
const [password, onChangePasswordText] = React.useState(null);
...
return (
<TextInput
...
onChangeText={onChangeUserNameText}
value={userName}
/>
<TextInput
...
onChangeText={onChangePasswordText}
value={password}
/>
<Button
...
onPress={SignIn(userName, password)}
/>
)
SignIn(...) 方法是从另一个我称为 home.service 的文件中导出的,该文件应该处理我的主屏幕和 API 调用之间的通信,我还放入了一些日志那个函数。
问题:
出于某种原因,每当我加载应用程序或更新我的任何输入时,当我按下 sing in 按钮时应该执行的功能正在执行
加载中
更改文本
我在这里错过了什么?
Edit/Conclusion :
谢谢你@Robin Zigmond,问题就像这位绅士所说的那样,我在 onPress 事件中调用我的函数的方式:
<Button
...
onPress={() => SignIn(userName, password)}
/>
需要添加回调,否则SignIn会一直执行:
function HomeScreen(props) {
const [userName, onChangeUserNameText] = React.useState(null);
const [password, onChangePasswordText] = React.useState(null);
...
return (
<TextInput
...
onChangeText={onChangeUserNameText}
value={userName}
/>
<TextInput
...
onChangeText={onChangePasswordText}
value={password}
/>
<Button
...
onPress={() => SignIn(userName, password)}
/>
)
}