taroウィジェットに、骨格スクリーンの実現コードを追加します。
最近では、パッケージのロードや骨格スクリーンの追加など、小プログラムの性能を最適化しましたが、今回は主に骨格スクリーンに関する内容を説明します。
骨格スクリーンについては、3つの方法があります。
1.直接UIさんにP図面を手伝ってもらい、loading図として載せてください。この方法は簡単で乱暴ですが、助けてもらう必要があります。
2.各ページごとに同じコードでスタイルを上書きします。この方法の工事量は分かります。
3.セットを書いてもいいですか?要素の位置情報を自動的に取得してレンダリングし、データが戻ったらアンインストールします。
次は主に第三の方法です。
メインフレームはtaroを採用しています。コードはマルチエンドに対応していますが、今日のコードは互換性を考慮しなければなりません。
上の考えによって、私達はまず骨格のスクリーンの容器を探し当てて、それからPを探し当てて灰色の元素になります。この元素の位置の大きさの情報を得て、最後にレンダリングしました。
要素を取得すると、taroはAPIを提供し、Taro.creat SelectorQuery()はこのAPIを通じてSelectorQueryオブジェクトのインスタンスを返し、次いでselectAll()を介して、骨格中の特定のクラスのclass名を検索し、検索した後、bounding ClienntRect()を介して要素の位置サイズ情報を取得し、これらの情報を配列に保存する。
私はここに二つの種類を書いています。一つはスカーレットオン-radiusで、円形をレンダリングします。一つはskeleeton-rectで、長方形をレンダリングします。後はみんな自分で広げます。
文字が多すぎて、ちょっと雲の中のように見えます。下にコードを入れます。
詳しく後代セレクタの互換性について説明します。 Baiduのウィジェットは現在、カスタムコンポーネントにまたがる選択器をサポートしていません。 ですが、H 5は後代セレクタ(.the-ancestor.the-descendant)を使用すると、自動的にカスタムコンポーネント内の後裔を識別することができます。カスタムコンポーネントを使用すると、外層に要素パッケージがあるかどうかは、カスタムコンポーネント内部の指定クラスセレクタに認識されます。 マイクロクレジットウィジェットは、カスタムコンポーネントにまたがる末裔セレクタ(.the-ancestor>>.the-descendant)をサポートしていますが、カスタムコンポーネントを使用する場合、外層は要素を入れ子できません。そうでなければ識別できません。 次にレンダリングします。これは比較的簡単です。直接コードを入れます。ここの背景色とPをストライプ状にするなどの要素の背景色はコンポーネントを使う時にカスタマイズして入ってもいいです。標準色があります。
最後に骨格のスクリーンを使うシーンに適しています。ページの構造は簡単で、元素の幅が高くて固定されています。元素の幅が高くて固定されていない場合、あなたが書いたmock偽のデータは実際にレンダリングしたページとの差が大きいかもしれません。例えば、滝流です。
はい、今回の収穫はここまでです。皆さん、もっといい方法があれば、伝言をしてください。最後に、完全なコード住所を添付します。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。
骨格スクリーンについては、3つの方法があります。
1.直接UIさんにP図面を手伝ってもらい、loading図として載せてください。この方法は簡単で乱暴ですが、助けてもらう必要があります。
2.各ページごとに同じコードでスタイルを上書きします。この方法の工事量は分かります。
3.セットを書いてもいいですか?要素の位置情報を自動的に取得してレンダリングし、データが戻ったらアンインストールします。
次は主に第三の方法です。
メインフレームはtaroを採用しています。コードはマルチエンドに対応していますが、今日のコードは互換性を考慮しなければなりません。
上の考えによって、私達はまず骨格のスクリーンの容器を探し当てて、それからPを探し当てて灰色の元素になります。この元素の位置の大きさの情報を得て、最後にレンダリングしました。
要素を取得すると、taroはAPIを提供し、Taro.creat SelectorQuery()はこのAPIを通じてSelectorQueryオブジェクトのインスタンスを返し、次いでselectAll()を介して、骨格中の特定のクラスのclass名を検索し、検索した後、bounding ClienntRect()を介して要素の位置サイズ情報を取得し、これらの情報を配列に保存する。
私はここに二つの種類を書いています。一つはスカーレットオン-radiusで、円形をレンダリングします。一つはskeleeton-rectで、長方形をレンダリングします。後はみんな自分で広げます。
文字が多すぎて、ちょっと雲の中のように見えます。下にコードを入れます。
// : >>>
// H5 (.the-ancestor .the-descendant) ,
// (.the-ancestor >>> .the-descendant), `.${this.props.selector} >>> .${this.props.selector}-radius`
if (process.env.TARO_ENV === 'weapp') {
Taro.createSelectorQuery().selectAll(`.${this.props.selector} >>> .${this.props.selector}-radius`)
.boundingClientRect().exec(rect => {
that.setState({
radiusList: rect[0]
});
});
}
else {
Taro.createSelectorQuery().selectAll(`.${this.props.selector} .${this.props.selector}-radius`)
.boundingClientRect().exec(rect => {
that.setState({
radiusList: rect[0]
});
});
}
上のコメントも見ましたが、マルチエンドで動作するなら、環境を判断して、環境によって異なるセレクタを使うことができます。上のコードは円形の灰色のエリアです。皆さんが複数の形のニーズがあれば、簡単に関数をパッケージ化できます。ここでは詳しく説明しません。具体的にはDemoに詳しく調べてみます。詳しく後代セレクタの互換性について説明します。
<View className='skeleton-container' style={{background: `${bgColor}`}}>
{
radiusList.map(radiusItem => (
<View className='skeleton-item skeleton-item-radius' style={{width: `${radiusItem.width}PX`, height: `${radiusItem.height}PX`,
background: `${itemColor}`, top: `${radiusItem.top}PX`, left: `${radiusItem.left}PX`}}
/>
))
}
{
rectList.map(rectItem => (
<View className='skeleton-item' style={{width: `${rectItem.width}PX`, height: `${rectItem.height}PX`,
background: `${itemColor}`, top: `${rectItem.top}PX`, left: `${rectItem.left}PX`}}
/>
))
}
</View>
ここで、コンポーネントはすでに完成しています。使用時に直接にコンポーネントを導入して、selectorに渡せばいいです。データは動的に取得されていますので、ページが空になります。ここではmockの偽データが必要です。カバーする要素類名はコンポーネントの中の図形類と一致していなければなりません。
<View className='container' style={{fontSize: '20PX'}}>
{
showSkeleton && <Skeleton
selector='skeleton'
bgColor='pink'
itemColor='skyblue'
/>
}
<View className='skeleton'>
<View className='userInfo'>
<Image
src={userInfo.avatarUrl}
alt=' '
className='userInfo-avatar skeleton-radius'
/>
<Text>{userInfo.nickName}</Text>
</View>
<View>
{
list.map(item => (
<View className='skeleton-rect' style={{marginBottom: '30PX'}}>{item}</View>
))
}
</View>
{/* , , H5 */}
<List />
</View>
</View>
コメントを見ましたか?ユーザー定義のコンポーネントを使う時、必ず注意してください。ユーザー定義のコンポーネントが要素によってエラーが発生したら、マイクロクレジットのプログラムはユーザー定義のコンポーネント内のグラフィッククラスを識別できません。最後に骨格のスクリーンを使うシーンに適しています。ページの構造は簡単で、元素の幅が高くて固定されています。元素の幅が高くて固定されていない場合、あなたが書いたmock偽のデータは実際にレンダリングしたページとの差が大きいかもしれません。例えば、滝流です。
はい、今回の収穫はここまでです。皆さん、もっといい方法があれば、伝言をしてください。最後に、完全なコード住所を添付します。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。