前提・実現したいこと
いつもお世話になっております。
React Nativeでアプリ開発をしているのですが、登録フォームでバリデーションエラーが出た際にエラー箇所までジャンプさせる方法が分からず質問させていただきました。
発生している問題・試したこと
色々調べた結果、ボタンをタップしてバリデーションで引っかかった時はscrollToでエラーが出た項目までジャンプさせようと考えました。
そのために、項目ごとにrefを追加してそれぞれmeasureで位置を取得しようとしたところ、取得した値がすべてundefinedになってしまいました。
下記ソースコードでは省略していますが、フォームの項目はContainerタグの中のScrollViewタグ内に書いています。
<View ref={'Name'}> <Text>名前</Text> <TextInput placeholder="例) ほげ" placeholderTextColor="gray" onChangeText={(val) => this.setState({ name: val })} value={this.state.name} /> </View>
scrollToError = () => { this.refs.Name.measure( (fx, fy, width, height, px, py) => { console.log('Component width is: ' + width) console.log('Component height is: ' + height) console.log('X offset to frame: ' + fx) console.log('Y offset to frame: ' + fy) console.log('X offset to page: ' + px) console.log('Y offset to page: ' + py) }) }
LOG Component width is: undefined LOG Component height is: undefined LOG X offset to frame: undefined LOG Y offset to frame: undefined LOG X offset to page: undefined LOG Y offset to page: undefined
初学者のためref等の動きもよく分っておらず、困っています。
解決方法、もしくはもっと良いやり方があればご教授いただきたいです。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/20 05:26