uniapp を使用してプロジェクトを開発する場合、パラメーターを渡して次のページにジャンプする必要があるシナリオによく遭遇します。ただし、ページを更新する必要がある状況に遭遇した場合、一部の開発者はページが期待どおりに更新されないことに気づきます。
この問題の原因は、uniapp のページジャンプ機構とページのコンポーネント更新機構にあります。この問題に対処するには、次の点を知っておく必要があります。
uniapp では、ページジャンプは uni.navigateTo
などのメソッドによって実装されます。ページジャンプを行う場合、新しいページは H5 のようにページ全体を更新せず、ライフサイクル関数を再実行するだけです。
uniapp のライフサイクル機能がわからない場合は、[公式ドキュメント](https://uniapp.dcloud.io/frame?id=lifecycle)を確認してください。簡単に言うと、uniapp のライフサイクル関数は onLoad
、onShow
、onReady
、onHide
、および onUnload
です。これらの関数はそれぞれ、ページの読み込み、ページの表示、ページの初期レンダリングの完了、ページの非表示、ページのアンロードなどのさまざまな状態を表します。
したがって、新しいページにジャンプした後にデータを更新する必要がある場合は、ページが実行できることを期待するのではなく、新しいページの onShow
ライフサイクル関数で関連する操作を実行する必要があります。を自動更新します。
uniappでは、ページ内のコンポーネントが独自のデータ更新の仕組みを持っています。ページ上のコンポーネントを更新する必要がある場合は、コンポーネントの this.$forceUpdate()
メソッドを手動でトリガーする必要があります。
たとえば、ページの onShow
ライフサイクル関数では、ページ内のリスト コンポーネントを更新する必要があります。これは次のように実装できます:
onShow() { // 获取最新数据 const newData = getData(); // 更新组件数据 this.$refs.list.data = newData; // 强制刷新列表 this.$refs.list.$forceUpdate(); }
コンポーネントの他のプロパティ (スタイルなど) を更新する必要がある場合は、変数をコンポーネントにバインドするか、計算されたプロパティを使用する必要があることに注意してください。
上記の 2 つの点の分析を通じて、uniapp ページを開発する際に非常に重要な結論を導き出すことができます。ページにジャンプするときは、ページが自動的に更新されることを期待すべきではなく、 # 新しいページで更新する必要があります。 ##onShowライフサイクル関数でのデータ更新。同時に、コンポーネントを更新する必要がある場合は、コンポーネントの
$forceUpdate() メソッドを手動でトリガーする必要があります。
以上がuniappページがパラメータでジャンプするが更新されない問題の解決方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。