前提・実現したいこと
React Nativeでアプリ開発をしています。
期待する動作
①:textInputでテキストを入力し、その内容をstateで保持
②:react navigationで画面を遷移し、その際①で保持したstateを遷移先に渡す
③:遷移先の画面で渡されたsatateを表示
④:react navigationで表示されるTopBarで遷移前の画面に戻る(添付画面参照)
⑤:textInput最初に入力されたテキストの値が表示されず初期化される
上記の動作になるように、試していますが、⑤のときにstateの値が初期化されず、遷移先で表示される値がそのまま表示されてしまいます。
解決の方法をご存知の方おりましたら、ご教授いただけないでしょうか?
対象のコード
遷移元のコード
JS
1import React from "react"; 2import { View, Text } from "react-native"; 3import { TextInput } from "react-native-gesture-handler"; 4 5class AreaSetScreen extends React.Component { 6 state = { 7 title: "初期値", 8 }; 9 10 handleToTestHome(title) { 11 this.props.navigation.navigate("TestHome", { title: title }); 12 } 13 14 render() { 15 return ( 16 <View> 17 <Text>テスト入力</Text> 18 <TextInput 19 value={this.state.title} 20 onChangeText={(text) => { 21 this.setState({ title: text }); 22 }} 23 onEndEditing={() => { 24 this.handleToTestHome(this.state.title); 25 }} 26 /> 27 </View> 28 ); 29 } 30} 31 32export default AreaSetScreen;
遷移先のコード
import React from "react"; import { Text, View } from "react-native"; class TestHome extends React.Component { state = { title: "", }; componentDidMount() { const { params } = this.props.navigation.state; this.setState({ title: params.title }); } render() { return ( <View> <Text>{this.state.title}</Text> </View> ); } } export default TestHome;
試したこと
下記の方法を試しましたが、うまくいきませんでした。
コンストラクタの利用
constructor(props) { super(props); this.state = { title: "初期値", }; }
componentDidMountの利用
componentDidMount() { this.setState({ title: "初期値", });
}
補足情報(FW/ツールのバージョンなど)
node : 12.18.3
react native : 4.10.1
expo : 3.22.3
React Navigation: 4.3.7
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/03 09:02
2020/08/04 07:31 編集
2020/08/04 08:11