如何在 React Native 中提交表单
How to submit a form in React Native
我觉得在这里问这个问题很疯狂,但我找不到任何关于如何为 RN 提交表单和捕获数据的好教程。我找到的所有东西都是有人在推动图书馆 "just npm install react-native-form-genie-magic-box and call it in your project"...
但我只想知道 - 如何在 vanilla React Native 中提交表单。
示例代码:
AuthContainer
class AuthContainer extends Component {
render() {
const { errorMessage, handleLogin } = this.props
return (
<Login
errorMessage={errorMessage}
onLoginClick={(e) => handleLogin(e)}
/>
)
}
}
.....
const mapDispatchToProps = (dispatch) => {
return {
handleLogin: (e) => {
e.preventDefault()
const form = e.target
const data = serialize(form, {hash: true})
const creds = { email:data.email, password: data.password }
dispatch(loginUser(creds))
},
}
}
登录
import { Container, Content, Form, Item, Input, Label, Button, Text } from 'native-base';
....
const Login = ({errorMessage, onLoginClick}) => {
return (
<Container>
<Content>
<Form >
{errorMessage &&
<Text>{errorMessage}</Text>
}
<Item floatingLabel>
<Label>Email</Label>
<Input
type="email"
name="email"
/>
</Item>
<Item floatingLabel last>
<Label>Password</Label>
<Input secureTextEntry={true} />
</Item>
<Button onPress={onLoginClick} ><Text>Sign in</Text></Button>
</Form>
</Content>
</Container>
)
}
问题:如何在AuthContainer的handleLogin
函数中获取提交的邮箱和密码?
您好,您可以使用以下 url 在 React 中实现表单。
https://github.com/davidkpiano/react-redux-form/issues/383
在 <input
你需要添加这样的东西,例如:
<Input onChangeText={(text) => this.setState({username: text})} value={this.state.username}
而当您使用 onPress
函数时,您只需获取 this.state.username 并在需要时使用它。
我通常不会执行处理 Login
或其他 .js
中的内容的函数,因此您需要将 this.state.username
传递给处理它的 page
。
如果我确实需要将某些东西传递给其他 page
,我通常会使用 GLOBALS
,例如:
// globals.js
module.exports = {
username: '',
};
然后使用globals.js
// import the globals.js
GLOBAL = require('./globals');
<Input onChangeText={(text) => this_onButtonPressed(text) value={this.state.username}/>
_onButtonPressed(text){
GLOBAL.username = this.state.username
// call function that handles it
}
然后在处理它的 page
上,您需要再次 import
并使用 GLOBAL.username.
如果你不明白它告诉我我会尝试更好地解释它,我需要知道你是否想在不同的 .js
上处理 login
或者它可以在具有表单的 .js
(这样更容易)
我觉得在这里问这个问题很疯狂,但我找不到任何关于如何为 RN 提交表单和捕获数据的好教程。我找到的所有东西都是有人在推动图书馆 "just npm install react-native-form-genie-magic-box and call it in your project"...
但我只想知道 - 如何在 vanilla React Native 中提交表单。
示例代码:
AuthContainer
class AuthContainer extends Component {
render() {
const { errorMessage, handleLogin } = this.props
return (
<Login
errorMessage={errorMessage}
onLoginClick={(e) => handleLogin(e)}
/>
)
}
}
.....
const mapDispatchToProps = (dispatch) => {
return {
handleLogin: (e) => {
e.preventDefault()
const form = e.target
const data = serialize(form, {hash: true})
const creds = { email:data.email, password: data.password }
dispatch(loginUser(creds))
},
}
}
登录
import { Container, Content, Form, Item, Input, Label, Button, Text } from 'native-base';
....
const Login = ({errorMessage, onLoginClick}) => {
return (
<Container>
<Content>
<Form >
{errorMessage &&
<Text>{errorMessage}</Text>
}
<Item floatingLabel>
<Label>Email</Label>
<Input
type="email"
name="email"
/>
</Item>
<Item floatingLabel last>
<Label>Password</Label>
<Input secureTextEntry={true} />
</Item>
<Button onPress={onLoginClick} ><Text>Sign in</Text></Button>
</Form>
</Content>
</Container>
)
}
问题:如何在AuthContainer的handleLogin
函数中获取提交的邮箱和密码?
您好,您可以使用以下 url 在 React 中实现表单。 https://github.com/davidkpiano/react-redux-form/issues/383
在 <input
你需要添加这样的东西,例如:
<Input onChangeText={(text) => this.setState({username: text})} value={this.state.username}
而当您使用 onPress
函数时,您只需获取 this.state.username 并在需要时使用它。
我通常不会执行处理 Login
或其他 .js
中的内容的函数,因此您需要将 this.state.username
传递给处理它的 page
。
如果我确实需要将某些东西传递给其他 page
,我通常会使用 GLOBALS
,例如:
// globals.js
module.exports = {
username: '',
};
然后使用globals.js
// import the globals.js
GLOBAL = require('./globals');
<Input onChangeText={(text) => this_onButtonPressed(text) value={this.state.username}/>
_onButtonPressed(text){
GLOBAL.username = this.state.username
// call function that handles it
}
然后在处理它的 page
上,您需要再次 import
并使用 GLOBAL.username.
如果你不明白它告诉我我会尝试更好地解释它,我需要知道你是否想在不同的 .js
上处理 login
或者它可以在具有表单的 .js
(这样更容易)