React 是一個用於建立使用者介面的強大 JavaScript 函式庫。雖然其靈活性是其最大的優勢之一,但有時會導致程式碼冗長。幸運的是,有許多方法可以透過簡潔、高效的單行程式碼來簡化 React 中的常見模式。在本文中,我們將探索 30 個有用的 React 行話,它們將使您的程式碼更乾淨、更有效率。每個範例都附有簡短的解釋以突出其用法。
根據 props 或狀態簡化條件 UI 渲染。
const Greeting = ({ isLoggedIn }) => isLoggedIn ? <h1>Welcome!</h1> : <h1>Please log in</h1>;
為 props 提供預設值以避免未定義的錯誤。
const Button = ({ label = "Click Me" }) => <button>{label}</button>;
使用 JavaScript 物件直接套用動態樣式。
const Box = ({ size }) => <div> <h3> 4. Functional Updates in State </h3> <p>Use functional updates to access the latest state.<br> </p> <pre class="brush:php;toolbar:false">const [count, setCount] = useState(0); const increment = () => setCount(prev => prev + 1);
直接內聯處理使用者輸入事件。
const Input = () => <input onChange={e => console.log(e.target.value)} />;
輕鬆地將所有道具傳遞給組件。
const Button = props => <button {...props} />;
根據 props 動態分配 CSS 類別。
const Alert = ({ type }) => <div className={`alert ${type}`}>Alert Message</div>;
映射數組以產生元素列表。
const List = ({ items }) => <ul>{items.map((item, index) => <li key={index}>{item}</li>)}</ul>;
過濾數組並僅渲染匹配的項目。
const FilteredList = ({ items }) => <ul>{items.filter(item => item.active).map(item => <li key={item.id}>{item.name}</li>)}</ul>;
安全存取深層嵌套的物件屬性。
const UserProfile = ({ user }) => <p>{user?.name || "Guest"}</p>;
有條件地渲染元件或元素。
const ErrorMessage = ({ error }) => error && <p>{error.message}</p>;
將組件作為可重複使用包裝器的道具。
const Wrapper = ({ Component }) => <Component />;
在組件安裝期間僅執行一次效果。
useEffect(() => console.log("Mounted"), []);
消除使用者輸入的反跳以提高效能。
const Input = ({ onChange }) => <input onChange={e => debounce(onChange(e.target.value), 300)} />;
將新的狀態更新合併到現有狀態。
const [state, setState] = useState({}); const updateState = updates => setState(prev => ({ ...prev, ...updates }));
使用解構的 props 來獲得更簡潔的程式碼。
const Greeting = ({ name }) => <h1>Hello, {name}</h1>;
記憶函數以避免不必要的重新建立。
const handleClick = useCallback(() => console.log("Clicked"), []);
為可重複使用邏輯建立簡潔的自訂掛鉤。
const useToggle = initialValue => useState(initialValue).reduce((state, setState) => [state, () => setState(!state)]);
將多個元素分組,無需增加額外的 DOM 節點。
const FragmentExample = () => <><p>First</p><p>Second</p></>;
使用消費者元件存取上下文值。
const Greeting = ({ isLoggedIn }) => isLoggedIn ? <h1>Welcome!</h1> : <h1>Please log in</h1>;
提供預設函數作為 props 以防止執行階段錯誤。
const Button = ({ label = "Click Me" }) => <button>{label}</button>;
直接在事件處理程序中防止預設行為。
const Box = ({ size }) => <div> <h3> 4. Functional Updates in State </h3> <p>Use functional updates to access the latest state.<br> </p> <pre class="brush:php;toolbar:false">const [count, setCount] = useState(0); const increment = () => setCount(prev => prev + 1);
動態導入元件以獲得更好的效能。
const Input = () => <input onChange={e => console.log(e.target.value)} />;
將子項包裝在後備 UI 中以防止錯誤。
const Button = props => <button {...props} />;
對靈活的組件使用 render-prop 模式。
const Alert = ({ type }) => <div className={`alert ${type}`}>Alert Message</div>;
根據邏輯有條件地套用屬性。
const List = ({ items }) => <ul>{items.map((item, index) => <li key={index}>{item}</li>)}</ul>;
根據條件動態載入模組。
const FilteredList = ({ items }) => <ul>{items.filter(item => item.active).map(item => <li key={item.id}>{item.name}</li>)}</ul>;
輕鬆將輸入值與狀態同步。
const UserProfile = ({ user }) => <p>{user?.name || "Guest"}</p>;
使用reduce將資料轉換為元素。
const ErrorMessage = ({ error }) => error && <p>{error.message}</p>;
有條件地使用鉤子而不違反規則。
const Wrapper = ({ Component }) => <Component />;
這些俏皮話展示了 React 的優雅和多功能性。透過利用這些簡潔的模式,您可以編寫更清晰、更易於維護的程式碼,從而提高工作效率。嘗試將它們合併到您的專案中,看看有何不同!
以上是React OneLiners 提高編碼效率的詳細內容。更多資訊請關注PHP中文網其他相關文章!