React|ラフィスタリ工場コメント
ラファスタコメント
上記コードの最初の項目では,React-Class ComponentとWebFirstのみで作成した項目をReact-Fancial ComponentとWebFirst,移動Firstの反応型に再パッケージする.
プロジェクト-GitHub
アイテム→リンク
覚えて符号化したい
useEffectからuseCallbackを模倣します。
プロジェクトでは、画面サイズが変化するたびに
resize
イベントが適用され、ブラウザの画面サイズが変化するたびに、フローするスライドが作成されます.このプロセスでは、ブラウザがサイズを変更するたびに(レンダリング)関数を再生成する必要がないため,
useCallback
を用いたが,初回接触者に直接接触できない可能性があるため,以下の方法をまとめた.// Products.jsx
useEffect(() => {
const onWindowSize = () => {
setInnerWidth(window.innerWidth);
};
window.addEventListener('resize', onWindowSize);
return () => {
window.addEventListener('remove', onWindowSize);
};
}, []);
childrenを使用して、再使用可能なスライドコンポーネントを作成します。
子供のレイアウトが親のレイアウトと同じで、子供のレイアウトだけを変えると便利です.プロジェクトのホームページでは、スライドの上下に1枚ずつ大きさの異なるスライドがあり、
children
を使用して、スライドの大きなレイアウトをそのままにして、ボタンを押すだけで中の画像を変えることができます.これは非常に役に立ちます.import React, { useState, useEffect } from 'react';
import Button from '../Button/Button';
import './Slide.scss';
function Slide({ title, list, name, children, onSlide }) {
const [slideBg, setSlideBg] = useState('');
const [slideCount, setSlideCount] = useState(1);
const handleNextClick = () => {
if (slideCount < list.length) {
setSlideCount(prev => prev + 1);
onSlide('next', slideCount);
}
};
const hadlePrevClick = () => {
if (slideCount > 1) {
setSlideCount(prev => prev - 1);
onSlide('prev', slideCount);
}
};
useEffect(() => {
let slideItem = list.find(item => item.id === slideCount);
setSlideBg(slideItem && slideItem.background);
}, [list, slideCount]);
if (list.length === 0) {
return null;
}
return (
<section className="slide" style={{ background: slideBg }}>
<div className={`slide-wrapper__${name}`}>
<h3 className={`slide-title__${name}`}>{title}</h3>
<ol className={`slide-count__list-${name}`}>
<li>
<Button
className="button--prev"
disabled={slideCount === 1}
onClick={hadlePrevClick}
>
<i className="fas fa-chevron-left" />
</Button>
</li>
<li className="start-count">
<span>{slideCount}</span>
</li>
<li className="center">
<span>/</span>
</li>
<li className="end-count">
<span>{list.length}</span>
</li>
<li>
<Button
className="button--next"
onClick={handleNextClick}
disabled={slideCount === list.length}
>
<i className="fas fa-chevron-right" />
</Button>
</li>
</ol>
</div>
{children}
</section>
);
}
Reference
この問題について(React|ラフィスタリ工場コメント), 我々は、より多くの情報をここで見つけました https://velog.io/@vi2920va/React-라페스타-리팩토링-리뷰テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol