なぜHTML属性はDOMに異なって設定されるのですか?


8

数時間掘り下げた後、次の問題について誰かが助けてくれることを期待して、SOに関する質問をすることに決めました。

  1. Webアプリケーションの1つとして、Reactサポートライブラリと一緒にOnsen UI jsフレームワークを使用しました
  2. 開発環境でアプリケーションをレンダリングしようとすると、すべてが正しく機能しているように見えますが、ステージング環境でそれを試みると、一部のコンポーネントの動作が異なります
  3. これまでに見つけたもの:ステージング環境では、一部のHTML属性がDOMに別様に設定されているようです:

    |----------------|---------------|--------------|
    | HTML attribute |    DEV ENV    | STAGING ENV  |
    |----------------|---------------|--------------|
    | fixed-content  | fixed-content | fixedcontent |
    |----------------|---------------|--------------|
    | active-index   | active-index  |     index    |
    |----------------|---------------|--------------|
    

このため、OnsenフレームワークはHTML要素の属性を見つけることができず、以下に関係なく異なる動作をします。

  1. 私たちは同じブラウザーを使用しています(Chrome、Edge、Firefoxで確認)
  2. 両方の環境に同じJSコードがロードされています

環境間の違いは何ですか?

  1. JSファイルは、開発マシンとステージング環境のS3にローカルに保存されます。
  2. ステージング環境で暗号化された接続を使用します
  3. Accept-Encodingヘッダーはgzip, deflateローカルとgzip, deflate, brステージングにあります
  4. たぶん何か他に探す必要がありますか?

ここで何が起こっているのか誰か知っていますか?


AngularまたはベースJS APIでReactバージョンを使用していますか?JSとAngularバージョンはfixed-contentを属性として使用しているようですが、ReactバージョンはrenderFixedを属性として使用しています。それとも正しく使用していて、この質問のreactjsタグは誤解を招くだけですか?
シリー

そのため、onsen uiには、反応ライブラリが上にある純粋なjsコアがあります。私たちはアプリでこれら2つを使用します
Mihai Matei

属性のプレフィックスを付けていますdata-*か?
ブレットグレッグソン

いいえ。実際には、温泉uiフレームワークがすべてを処理しますが、私が見た限りでは、データセットを使用していません
Mihai Matei

回答:


12

私たちは実際に問題を発見し、それを見つけるのに何時間もかかりましたが、解決策は非常に単純です。

ステージング/実稼働環境では、Babelプラグインを使用しtransform-react-remove-prop-typesてReactプロップタイプを削除します。

残念ながら、Onsen UI Reactサポートライブラリは、コンポーネントの定義されたプロップタイプに依存しているため、それらが取り除かれると、ライブラリの動作が異なります。

我々のしたこと:

  1. オプション0.3.3を使用できるように、babelプラグインをバージョンに更新しましたignoreFilenames
  2. Onsen UI Reactライブラリのコードを含むファイルをスキップしました

    if (cli.production) {
        config.babel.plugins.push([
            'transform-react-remove-prop-types',
            {
                ignoreFilenames: ['projectleader']
            }
        ]);
    }
    
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.