所以我现在已经开了几天......
问题是我无法以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;虽然应用程序值正确填充,甚至可以从道具中正确检索。
答案 0 :(得分:0)
显然,您可以通过调用Navigation onChange()(表单组件中的this.props.input.onChange())函数来触发值建立。 它应该在componentwillmount()方法中调用(至少它可以帮助我,也许有更好的函数来调用)并且每次都有实际的变化。这样就形成了价值,可以正确选择。