React Native中的redux-form有问题

时间:2017-06-27 14:34:31

标签: javascript react-native redux hybrid-mobile-app redux-form

所以我现在已经开了几天......

问题是我无法以React-native redux格式打印预填表格的当前值。

我已经尝试了很多方法来简单地打印出值,但它发现它们是"未定义的"那就是那个。

这是一些代码。 这是我显示表单的方式:

  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打印&#34;&gt;&gt;&gt;未定义&#34;虽然应用程序值正确填充,甚至可以从道具中正确检索。

1 个答案:

答案 0 :(得分:0)

显然,您可以通过调用Navigation onChange()(表单组件中的this.props.input.onChange())函数来触发值建立。 它应该在componentwillmount()方法中调用(至少它可以帮助我,也许有更好的函数来调用)并且每次都有实际的变化。这样就形成了价值,可以正确选择。