レンダリング機能の状態を変更することは想定されていません。Reactjs:レンダリングの状態を何度か変更してください。
これは理にかなっていますが、私は自分自身を特定の状況に置いています。私はオフラインアプリケーションを構築しており、オフラインストレージシステムを使用してデータを取得しています。さて、あるデータを取得するためにメソッドが呼び出されると、キャッシュがチェックされ、期限が切れていなければコンポーネントはデータにアクセスすることができず、何も起こりませんが、期限が切れていればAPI関心のあるコンポーネントが再レンダリングされます。
これらのメソッドは、新しいデータを取得して再レンダリングするAPIに行くため、最初に呼び出されたときにコンポーネントの状態を変更し、データは既に存在するため状態を変更しませんキャッシュ内にある。
コンポーネントのマウント時にこれらのメソッドを呼び出すことができましたが、これは私が今やっていることですが、再呼び出しが必要な場合は、コンポーネントをアンマウントして再マウントする必要があります。これはこれを行う唯一の方法でしょうか?
ありがとうございます!
私はすでに、何かが変更されたときにキャッシュからrender()を呼び出しています。あなたが提案している解決策は、単純にrenderを呼び出すのではなく、必要に応じてキャッシュを更新し、キャッシュを呼び出すメソッドをコンポーネント内で呼び出すことができるということです。 –
ええ、あなたは基本的に、その外部の 'cache/state'と独自のコンポーネントインスタンス' state'との間に "リンク"を作成します。一方が変更された場合、もう一方は通知されます。このようなもの: 'this.props.myCache.listen( 'change'、this.onCacheChange)'と 'this.onCacheChange =()=> this.setState({value:this.props.myCache.getValue() )}); 'React [' setState']の詳細(https://facebook.github.io/react/docs/component-api.html)。 – AlexandruB
ええ、これは既に起こっています。だから、何かがキャッシュをクリアすると言うことができます。キャッシュは、関心のあるすべてのページを再レンダリングします。問題は、componentWillMountで呼び出されたメソッドを呼び出して呼び出す必要があり、APIを再度呼び出して、キャッシュを変更して再レンダリングを引き起こすことです。これは、キャッシュからのレンダリングだけでなく、非同期にapiを呼び出してからレンダリングするコンポーネント内のメソッドを呼び出すことで解決策を提案しましたか? –