フォーム画面から2つのパラメータを取得し、React Navigator経由でそれらを渡して前の画面に表示する方法が完全に失われています。React Navigationで異なる画面間でTextInputの小道具を渡す
問題のアプリセクションは次のようになります。
1. touchablehighlight to screenを選択します。
2.入力タイトルと説明を入力してpress on submit
3. onpressは、キーを使用してパラメータを前のページに送信する関数を実行します。
4.プロンプトが表示された状態で元のページに戻ります。
私はプロセスで複数の問題が生じています:
1.私が正しくドキュメントを理解していた場合、各ページには、一意のキーを持っていると私は、しかし、未知の、this.props.navigation.state.key経由でそれを見つけることを試みました私には、リフレッシュ時にID番号が変わるでしょう。
2.関数が実行される問題2が発生しますが、元のページにリダイレクトされません。
3. .dispatchの後に.navigate行を試しましたが、元のページの新しいコピーを開き、控えめに渡された新しいプロップを表示しません。
import React from 'react';
import styles from '../styling/style.js';
import { Text, View, Image, TouchableHighlight, TextInput, Alert } from 'react-native';
import { StackNavigator, NavigationActions } from 'react-navigation';
import Forms from './formGenerator';
export default class Workout extends React.Component {
constructor(props) {
super(props);
this.state = {
programTitle: '',
programDescription: ''
}
}
render() {
const {navigate} = this.props.navigation;
return (
<Image style={styles.workoutContainer, { flex: 1}} source={require("../images/HomepageBackground.jpg")}>
<View style={styles.workoutBody}>
<Text style={styles.workoutTextBody}> {this.state.programTitle}</Text>
<Text style={styles.workoutTextBody}>{this.state.programDescription}</Text>
</View>
<View style={styles.createButton}>
<TouchableHighlight onPress={Alert.alert(this.props.navigation.state.key)} style={styles.addButtonTouch} title='test' >
\t <Text style={styles.addButtonText}>+</Text>
</TouchableHighlight>
</View>
</Image>
);
}
// End of the render
}
import React from 'react';
import styles from '../styling/style.js';
import { Text, View, Image, TouchableHighlight, TextInput, Button, Alert } from 'react-native';
import Workout from './workouts';
import { NavigationActions } from 'react-navigation';
export default class Forms extends React.Component {
constructor(props) {
super(props);
this.state = {
programTitle: '',
programDescription: ''
}
}
render() {
const {goBack} = this.props.navigation;
const {params} = this.props.navigation.state;
return (
<Image style={styles.workoutContainer, { flex: 1}} source={require("../images/HomepageBackground.jpg")}>
<View style={styles.workoutBody}>
<Text style={styles.formHeader}>Program Title</Text>
<TextInput
autoFocus={true}
style={styles.formBody}
onChangeText={(programTitle) => this.setState({programTitle})}
placeholder='Title'
value={this.state.programTitle} />
<Text style={styles.formHeader}>Description (Ex. 4sets x 10reps)</Text>
<TextInput
autoFocus={true}
style={styles.formBody}
placeholder='Description'
onChangeText={(programDescription) => this.setState({programDescription})}
value={this.state.programDescription} />
<TouchableHighlight onPress={this.addProgram} style={styles.buttonBody} title="Add Program" >
<Text>Add Program</Text>
</TouchableHighlight>
</View>
</Image>
);
}
addProgram =() => {
Alert.alert(this.props.navigation.state.key);
this.setState({programTitle: ''});
this.setState({programDescription: ''});
const setParamsAction = NavigationActions.setParams({
params: { programTitle: this.state.programTitle, programDescription: this.state.programDescription },
key: ,
})
this.props.navigation.dispatch(setParamsAction)
};
}
申し訳ありませんが、あなたは現在の画面と前の画面を参照していますか? –
@JefreeSujitごめんなさいこのfirstpage(onpress)> formpage(onpress)>元の最初のページに戻る – RandomC
ページキーを使う代わりにコールバックを使うことをお勧めします。コールバックをformpageに渡し、onSubmitをfalseに戻してその値を親コールバックに渡し、親がその値をサブミットするようにします。このようにして、最初のページは値を保持できます。 –