我正在使用react-native制作auth组件。
下面的代码发送到'this.props.navigation'的'MainTab'取决于axios的结果。
<TouchableOpacity onPress={this.handleSubmit}>
<Text>Save</Text>
</TouchableOpacity>
handleSubmit = () => {
const result = await axios.post(
'http://192.0.0.1:4000/clients',
users
);
if (result.data.success) {
return this.props.navigation.navigate('MainTab');
}
return false
};
但我想在其他“js”文件中使用handleSubmit以避免重复执行。
因此,我编辑如下代码。
import { saveSettings } from '../../storage/settingsStorage'
handleSubmit(): void {
saveSettings(this.state);
}
// in 'settingsStorage.js'
export const saveSettings = async users => {
try {
const result = await axios.post(
'http://192.0.0.1:4000/clients/token',
users
);
if (result.data.success) {
return this.props.navigation.navigate('MainTab');
}
return false
} catch (e) {
console.log(e);
}
};
在这种情况下,我知道如果不传递 props,就无法在普通 Js 文件中传递 'this.props'。
但我不知道如何传递 props?
非常感谢您阅读本文。
最佳答案
根据您的描述,我认为您可以将第二个参数添加到 saveSettings
并通过 navigation
对象传递:
import { saveSettings } from '../../storage/settingsStorage'
handleSubmit(): void {
saveSettings(this.state, this.props.navigation);
}
// in 'settingsStorage.js'
export const saveSettings = async (users, navigation) => {
try {
const result = await axios.post(
'http://192.0.0.1:4000/clients/token',
users
);
if (result.data.success) {
return navigation.navigate('MainTab');
}
return false
} catch (e) {
console.log(e);
}
};
关于javascript - 如何使用react-native将this.props传递给js文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57882978/