React Native 中的 redux-form 有问题
something wrong with redux-form in React Native
所以我已经断断续续地研究了几天...
问题是我无法在 React-native redux 表单中打印预填表单的当前值。
我尝试了很多方法来简单地打印出值,但它发现它们是 "undefined",仅此而已。
这是一些代码。
这是我显示表格的方式:
render(){
const {data} = this.props
return(
<View>
<ScrollView style={styles.container}>
<QuestionnaireItem title={Strings.en.fewWords}>
<Field name={"fewWords"}
component={TextInput}
style={styles.fewWords}
defaultValue={data.few_words}
multiline={true}/>
</QuestionnaireItem>
<!-- ... -->
这是实现表单并尝试在状态到道具映射器中打印它的方式:
let QuestionnaireFormRF = reduxForm({
form: 'QuestionnaireForm'
})(QuestionnaireFormComponent);
function mapStateToProps(state) {
const selector = formValueSelector('QuestionnaireForm')
const {
fewWords,
familyState,
kidsQuantity
} = selector(state, "fewWords", "familyState", "kidsQuantity")
console.log(">>> " + fewWords)
return {
fewWords,
familyState,
kidsQuantity
}
}
QuestionnaireFormRF = connect(mapStateToProps)(QuestionnaireFormRF)
export default QuestionnaireFormRF
而且,如果有帮助,这就是调用此组件的方式。
const tabArray = [
{
title: Strings.en.questionnaire,
component: QuestionnaireForm,
props: {}
},
{
title: Strings.en.questionnaireForPartner,
component: QuestionnaireForPartnerForm,
props: {}
}
]
export default class QuestionnaireScreen extends Component {
constructor(props){
super(props)
}
componentWillMount(){
tabArray[0].props = { data: this.props.data, navigator: this.props.navigator }
tabArray[1].props = { data: this.props.data, navigator: this.props.navigator}
}
render(){
return(
<TopTabsMulti tabs={tabArray} openTab={0}/>
)
}
}
我有点担心上面的实现会弄乱 redux 架构,但是到目前为止还没有找到确凿的证据。
因此,正如我所说,我无法以任何方式检索当前值并且 console.log 打印“>>> undefined”,尽管在应用程序中值已正确填充,甚至从中正确检索道具.
显然您可以通过调用 Navigation onChange()(表单组件中的 this.props.input.onChange())函数来触发值建立。
它应该在 componentwillmount() 方法中调用(至少它对我有帮助,也许有更好的功能可以调用)并且每次都有实际的变化。这样就可以建立表单值并可以正确选择。
所以我已经断断续续地研究了几天...
问题是我无法在 React-native redux 表单中打印预填表单的当前值。
我尝试了很多方法来简单地打印出值,但它发现它们是 "undefined",仅此而已。
这是一些代码。 这是我显示表格的方式:
render(){
const {data} = this.props
return(
<View>
<ScrollView style={styles.container}>
<QuestionnaireItem title={Strings.en.fewWords}>
<Field name={"fewWords"}
component={TextInput}
style={styles.fewWords}
defaultValue={data.few_words}
multiline={true}/>
</QuestionnaireItem>
<!-- ... -->
这是实现表单并尝试在状态到道具映射器中打印它的方式:
let QuestionnaireFormRF = reduxForm({
form: 'QuestionnaireForm'
})(QuestionnaireFormComponent);
function mapStateToProps(state) {
const selector = formValueSelector('QuestionnaireForm')
const {
fewWords,
familyState,
kidsQuantity
} = selector(state, "fewWords", "familyState", "kidsQuantity")
console.log(">>> " + fewWords)
return {
fewWords,
familyState,
kidsQuantity
}
}
QuestionnaireFormRF = connect(mapStateToProps)(QuestionnaireFormRF)
export default QuestionnaireFormRF
而且,如果有帮助,这就是调用此组件的方式。
const tabArray = [
{
title: Strings.en.questionnaire,
component: QuestionnaireForm,
props: {}
},
{
title: Strings.en.questionnaireForPartner,
component: QuestionnaireForPartnerForm,
props: {}
}
]
export default class QuestionnaireScreen extends Component {
constructor(props){
super(props)
}
componentWillMount(){
tabArray[0].props = { data: this.props.data, navigator: this.props.navigator }
tabArray[1].props = { data: this.props.data, navigator: this.props.navigator}
}
render(){
return(
<TopTabsMulti tabs={tabArray} openTab={0}/>
)
}
}
我有点担心上面的实现会弄乱 redux 架构,但是到目前为止还没有找到确凿的证据。
因此,正如我所说,我无法以任何方式检索当前值并且 console.log 打印“>>> undefined”,尽管在应用程序中值已正确填充,甚至从中正确检索道具.
显然您可以通过调用 Navigation onChange()(表单组件中的 this.props.input.onChange())函数来触发值建立。 它应该在 componentwillmount() 方法中调用(至少它对我有帮助,也许有更好的功能可以调用)并且每次都有实际的变化。这样就可以建立表单值并可以正确选择。