Ich lerne derzeit reagieren.Container Komponente Requisiten Fehler
Ich habe einen Container-Komponente:
<SceneSelectNumber
goBack={this.goBack}
onChangeNumber={sceneConfig.onChangeNumber}
selectedNumberValue={this.props.daysInAweek}
onDone={this.onDone}
renderHowMuch
helpMeCalculate
sceneConfig={sceneConfig}
/>
, die alle zugehörigen untergeordneten Komponenten enthält:
<Flexible>
<LYDSceneContainer
goBack={this.props.goBack}
subSteps={this.props.subSteps}>
<Flexible>
<LYDSceneQuestion {...this.props.sceneConfig.question[0]} />
<LYDSelectNumber
selectedNumberValue={this.props.selectedNumberValue[0]}
onChangeNumber={this.props.onChangeNumber}
/>
</Flexible>
{this.props.renderHowMuch && this.renderHowMuch()}
{this.props.helpMeCalculate && this.renderHelpMeCalculateButton()}
</LYDSceneContainer>
<NextButton
onPress={this.props.onDone}
disabled={!this.props.selectedNumberValue}
fullWidth
/>
</Flexible>
Aber, wie ich ein anderes Kind Komponente hinzufügen müssen, ich Daten in einem Array bin Speicherung von Objekten sceneConfig
. Dies bricht meine anderen Seiten, die die Komponente verwenden
question: [
{
text: ['on how many of the last 7 days', 'did you have a drink?'],
},
{
text: [
'On your drinking days',
'how many units of alcohol did you typically drink?',
],
},
],
die neuen Daten anzuzeigen, ich habe aus, {props.text}
zu {props.text[1]}
<View style={[styles.container, props.style]}>
<Text style={styles.textRowNormal}>
{props.text[0]}
</Text>
<Text style={styles.textRowBold}>
{props.text[1]}
</Text>
</View>
meine LYDSceneQuestion
Komponente ändern.
Wie kann ich meine Komponente ändern, damit andere Seiten, die sie verwenden, nicht beschädigt werden?
Ich habe meine Daten geändert:
const sceneConfig = {
question: {
text: 'string, 'string')],
},
An:
question: [
{
text: ['on how many of the last 7 days', 'did you have a drink?'],
},
{
text: [
'On your drinking days',
'how many units of alcohol did you typically drink?',
],
},
],
selectNumber: [() => {},() => {}],
onChangeNumber: [
number => {
const data = { [field]: number };
this.props.dispatch(assessmentActions.updateAssessment(step, data));
},
number => {
const data = { [field]: number };
this.props.dispatch(assessmentActions.updateAssessment(step, data));
},
],
Es ist sehr schwierig, den Kontext Ihres Problems anhand dieses Beispiels zu verstehen. Sie können einen ternären Operator verwenden, um bei Bedarf bedingtes Rendering auszuführen. –
So etwas, '{props.text? props.text: props.text [0]} '? – Bomber
Wenn Sie sicher sein wollen, ob props.text existiert und ein String oder Array ist, können Sie diese '' {props.text && props.text.constructor === String verwenden? props.text: props.text [0]} '' '. Wenn Sie mehr Elemente haben, sollten Sie das Array mit * Array.prototype.map * abbilden, anstatt Elemente direkt nach dem Index aufzurufen. –