2017-06-27 49 views
1

所以我一直在此上下车的夫妇现在天...有毛病终极版形式在本地做出反应

问题是,我不能够打印的当前值预填充以React本机还原形式存在。

我试过一堆方法来简单地打印出值,但它发现它们为“未定义”,那就是。

这是一些代码。 这是我的显示形式:

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}/> 
    ) 
    } 

} 

我有点担心上面的实现可能会搞乱REDX架构,但是到目前为止还没有发现可靠的证据。

因此,正如我所说的,我无法以任何方式检索当前值,并且console.log会打印“>>> undefined”,尽管应用程序值已正确填充,甚至可以从道具中正确检索。

+0

这些预填充值来自哪里?感觉好像可能会丢失一些代码,因为从那里你有什么,选择器将始终返回空,直到你填写组件本身的值。 –

+0

值从父组件传递下来,然后由redux管理它们。实施是根据wix导航解决方案:react-native-navigation。 即使值正在调节,选择器实际上也会返回空值。比如你键入一些东西并重新渲染 – Medardas

回答

0

显然你可以通过调用导航onChange()(this.props.input.onChange()in form component)函数来触发值的建立。 它应该在componentwillmount()方法中调用(至少它可以帮助我,也许有更好的功能调用),并且每次都有实际的变化。这种形式的价值确立,并可以适当选择。