反応仮想化と酵素を併用することは可能ですか?それらを一緒に使用しようとすると、グリッドに空のアイテムのリストが表示されるようです。反応仮想化はairbnb /酵素と機能しますか?
答えて
2は一緒に機能するはずです。私は可能性のある問題は、反応仮想化されたコンポーネントに幅や高さ0が与えられているため、何もレンダリングされないということです。
あなたがAutoSizer HOCを使用していると仮定すると(ほとんどの人はそうです)、私が参考にした1つのパターンは、2つのバージョンのコンポーネントをエクスポートすることです。明示的な幅/高さのプロパティを必要とするものと、もう一方をAutoSizerでラップするものです。擬似コードは次のようになります。
import { AutoSizer, VirtualScroll } from 'react-virtualized'
// Use this component for testing purposes so you can explicitly set width/height
export function MyComponent ({
height,
width,
...otherProps
}) {
return (
<VirtualScroll
height={height}
width={width}
{...otherProps}
/>
)
}
// Use this component in your browser where auto-sizing behavior is desired
export default function MyAutoSizedComponent (props) {
return (
<AutoSizer>
({ height, width }) => (
<MyComponent
height={height}
width={width}
{...props}
/>
)
</AutoSizer>
)
}
私は言及するのを忘れていました。私はjsdomを使ってnode.jsの酵素を使っています。 AutoSizerは実際のDOM測定APIに頼っていますか? – camwest
これは 'getBoundingClientRect'と' getComputedStyle'に依存します。あなたはそれがここで物事をどのように測定するかを見ることができます:https://github.com/bvaughn/react-virtualized/blob/master/source/AutoSizer/AutoSizer.js#L93 – brianvaughn
あなたがAutoResizerをバイパスすることをお勧めします。 getBoundingClientRectはjsdomでは正確ではありません。 – camwest
私のテストケースでこれを置く私の仕事:
import { AutoSizer } from 'react-virtualized';
// ...
it('should do something', function() {
spyOn(AutoSizer.prototype, 'render').and.callFake(function render() {
return (
<div ref={this._setRef}>
{this.props.children({ width: 200, height: 100 })}
</div>
);
});
// do something...
私はここにジャスミンのspyOnを使用していますが、他のライブラリが機能を上書きする独自の方法があります。 これは、リアクション仮想化ライブラリ(this._setRef
がソースコードからちょうど取り除かれた)の将来の変更に対してかなり脆弱であり、誤認をもたらす可能性があることに注意してください。
as react-virtualized 9.12.0では、オートサイザーはdefaultWidth
とdefaultHeight
のプロパティを持っています。 酵素テストが正しく実行されていることを確認しました。
<AutoSizer disableHeight defaultWidth={100}>
{({ width }) => (
....
)}
</AutoSizer>
- 1. 反応仮想化onRowsRenderedプレースホルダ
- 2. 反応仮想化のスティッキーヘッダー
- 3. 酵素との反応
- 4. モカ、酵素:酵素を用いた反応成分のカスタムテスト機能ユニット
- 5. ユニットテストa反応成分 - 酵素、酵素
- 6. 反応シントン/酵素は、es6クラスの機能をクリックしてシミュレートします
- 7. 反応仮想化と反応カスタムスクロールバーの統合
- 8. 仮想化されたテーブルに反応します - sortとsortBy
- 9. 反応させ、仮想化をリスト
- 10. 反応仮想化の行選択
- 11. 反応仮想化グリッドでソート可能な反応を使用する
- 12. 酵素/反応単位テスト
- 13. cssクラス名で作業し、反応仮想化または反応セレクト
- 14. 仮想化ソフトウェアはどのように機能しますか?
- 15. 仮想化されたグリッドソートアイコンに反応します
- 16. 酵素/反応/ Redux - 不変の違反。
- 17. WPF:TreeView仮想化が機能しない
- 18. 反応仮想テーブルのデフォルトソートカラム
- 19. 反応し、仮想化されたデータテーブルの例は
- 20. 酵素のエラーで反応した反応テスト
- 21. 試験は酵素でネイティブフラットリストに反応します
- 22. ARM Cortex A53 - ハードウェア仮想化機能
- 23. 反応仮想化テーブルのカスタムヘッダーのレンダリング方法
- 24. 反応仮想化されたInfiniteLoaderの上下両方向
- 25. jasmine jsdomと酵素で反応したときにfalseになると予想されます
- 26. セルをカスタマイズする反応テーブルを仮想化
- 27. 反応仮想化CellMeasurerが未定義のgetRowHeightを返す
- 28. 酵素/反応浅いレンダリングは高価ですか?
- 29. jestと酵素との反応でフォームをテストする
- 30. 酵素/反応試験でレンダーとシャローをいつ使用しますか?
あなたは、幅と高さ> 0をグリッドに渡していると確信していますか? (あなたはいくつかのコードを共有することができますか?) – brianvaughn
私は簡単な例を作りましょう。 – camwest
問題は私がオートサイザーを使っていることだと思います。調査を続けます... – camwest