2016-05-31 4 views
1

現在ReactJSで開発中です。ReactJSクライアント上の非同期時のマークアップ警告

警告:コンテナ内のマークアップを再利用しようとしましたが、 チェックサムが無効で反応し、我々はコンソールに見てみるとき、私たちはReactJSによって、常にこの1回の警告を参照してください。これは一般的にサーバー のレンダリングを使用しており、サーバー上で生成されたマークアップがクライアントが予期していたものではなかったことを意味します。 が動作するが、サーバレンダリングの利点の多くを失ったことを補うために注入された新しいマークアップに反応します。 は代わりに、生成されるマークアップは クライアントまたはサーバー上で異なる理由を把握:

(client) autosuggest__input" data-reactid="9"></d 
(server) autosuggest__input" placeholder="Value 

を問題は簡単です - 私たちは、プレースホルダを取得する入力フィールドを持っています。クライアント側では、コンテンツは非同期に設定されます。サーバー側では、非同期が不可能なため、値は同期設定されます。最終的な値は同じです。しかし、クライアント上では、その非同期的な反応は常にこのエラーを落とします。

クライアントで非同期の値を使用しているのにサーバーで同期しているときに「正しい」方法がありますか?

MeteorJSを使用して反応を起こしているため、クライアントでは非同期/リアクティブです。

+0

この質問にはいくつかの提案がありますが、ここで効果がありますか?:http://stackoverflow.com/questions/33521047/warning-react-attempted-to-reuse-markup-in-a-container-but- the-checksum-was-inv –

+0

クライアントが独自のコンポーネントをレンダリングするのではなく、サーバーから最初にレンダリングされたコンポーネントの状態を変更するようにしようとしました –

+0

@ MarkSchultheissその誤ったoが、これの反応性は、状態のみでなければならないのですか?しかし、データベースのデータを、クライアント上で非同期にフェッチされるがサーバー上で同期するコンポーネントのプロパティとして割り当てるとどうなりますか?たぶん私はあなたが意味するものを手に入れません。 – TJR

答えて

1

クライアントが独自のコンポーネントをレンダリングするのではなく、サーバーから最初にレンダリングされたコンポーネントの状態を変更するようにしてください。

場合によっては、<div>でラップすることで回避できます。

私はこの分野での同型のクイック検索を行なったし、この発見:それはあなたの答えの100%ですが、それは同様の問題(複数可)

検索部分的にエラーにもあなたを助けるかもしれないカバーjeffhandley.github.io/QuickReactions/15-isomorphic-aim.htmlわからないが: "Reactがコンテナ内のマークアップを再利用しようとしましたが、チェックサムが無効でした。"

これは、ページ上のコンポーネントを管理する方法に関する信頼できる情報と思われます。

関連する問題