React 是一个用于构建用户界面的强大 JavaScript 库。虽然其灵活性是其最大的优势之一,但有时会导致代码冗长。幸运的是,有很多方法可以通过简洁、高效的单行代码来简化 React 中的常见模式。在本文中,我们将探索 30 个有用的 React 行话,它们将使您的代码更干净、更高效。每个示例都附有简短的解释以突出其用法。
1. 条件渲染
根据 props 或状态简化条件 UI 渲染。
1 | const Greeting = ({ isLoggedIn }) => isLoggedIn ? <h1>Welcome!</h1> : <h1>Please log in</h1>;
|
登录后复制
登录后复制
2. 默认道具
为 props 提供默认值以避免未定义的错误。
1 | const Button = ({ label = "Click Me" }) => <button>{label}</button>;
|
登录后复制
登录后复制
3. 内联样式
使用 JavaScript 对象直接应用动态样式。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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);
|
登录后复制
登录后复制
5. 事件处理
直接内联处理用户输入事件。
1 | const Input = () => <input onChange={e => console.log(e.target.value)} />;
|
登录后复制
登录后复制
6.传播道具
轻松地将所有道具传递给组件。
1 | const Button = props => <button {...props} />;
|
登录后复制
登录后复制
7. 动态类
根据 props 动态分配 CSS 类。
1 | const Alert = ({ type }) => <div className={`alert ${type}`}>Alert Message</div>;
|
登录后复制
登录后复制
8. 数组映射
映射数组以生成元素列表。
1 | const List = ({ items }) => <ul>{items.map((item, index) => <li key={index}>{item}</li>)}</ul>;
|
登录后复制
登录后复制
9. 数组过滤
过滤数组并仅渲染匹配的项目。
1 | const FilteredList = ({ items }) => <ul>{items.filter(item => item.active).map(item => <li key={item.id}>{item.name}</li>)}</ul>;
|
登录后复制
登录后复制
10. 可选链接
安全访问深层嵌套的对象属性。
1 | const UserProfile = ({ user }) => <p>{user?.name || "Guest" }</p>;
|
登录后复制
登录后复制
11. 短路评估
有条件地渲染组件或元素。
1 | const ErrorMessage = ({ error }) => error && <p>{error.message}</p>;
|
登录后复制
登录后复制
12. 组件作为道具
将组件作为可重用包装器的道具传递。
1 | const Wrapper = ({ Component }) => <Component />;
|
登录后复制
登录后复制
13.具有依赖关系的UseEffect
在组件安装期间仅运行一次效果。
1 | useEffect(() => console.log( "Mounted" ), []);
|
登录后复制
14. 去抖输入
消除用户输入的反跳以提高性能。
1 | const Input = ({ onChange }) => <input onChange={e => debounce(onChange(e.target.value), 300)} />;
|
登录后复制
15. 合并国家
将新的状态更新合并到现有状态中。
1 2 | const [state, setState] = useState({});
const updateState = updates => setState(prev => ({ ...prev, ...updates }));
|
登录后复制
16. 解构道具
使用解构的 props 来获得更简洁的代码。
1 | const Greeting = ({ name }) => <h1>Hello, {name}</h1>;
|
登录后复制
17. 记忆回调
记忆函数以避免不必要的重新创建。
1 | const handleClick = useCallback(() => console.log( "Clicked" ), []);
|
登录后复制
18. 定制钩单衬
为可重用逻辑创建简洁的自定义挂钩。
1 | const useToggle = initialValue => useState(initialValue).reduce((state, setState) => [state, () => setState(!state)]);
|
登录后复制
19. 内联片段
对多个元素进行分组,无需添加额外的 DOM 节点。
1 | const FragmentExample = () => <><p>First</p><p>Second</p></>;
|
登录后复制
20. 上下文消费者
使用消费者组件访问上下文值。
1 | const Greeting = ({ isLoggedIn }) => isLoggedIn ? <h1>Welcome!</h1> : <h1>Please log in</h1>;
|
登录后复制
登录后复制
21.默认函数道具
提供默认函数作为 props 以防止运行时错误。
1 | const Button = ({ label = "Click Me" }) => <button>{label}</button>;
|
登录后复制
登录后复制
22. 防止事件违约
直接在事件处理程序中防止默认行为。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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);
|
登录后复制
登录后复制
23. 延迟加载组件
动态导入组件以获得更好的性能。
1 | const Input = () => <input onChange={e => console.log(e.target.value)} />;
|
登录后复制
登录后复制
24. 内联误差边界
将子项包装在后备 UI 中以防止错误。
1 | const Button = props => <button {...props} />;
|
登录后复制
登录后复制
25. 渲染道具
对灵活的组件使用 render-prop 模式。
1 | const Alert = ({ type }) => <div className={`alert ${type}`}>Alert Message</div>;
|
登录后复制
登录后复制
26. 条件属性
根据逻辑有条件地应用属性。
1 | const List = ({ items }) => <ul>{items.map((item, index) => <li key={index}>{item}</li>)}</ul>;
|
登录后复制
登录后复制
27. 动态导入
根据条件动态加载模块。
1 | const FilteredList = ({ items }) => <ul>{items.filter(item => item.active).map(item => <li key={item.id}>{item.name}</li>)}</ul>;
|
登录后复制
登录后复制
28. 受控组件
轻松将输入值与状态同步。
1 | const UserProfile = ({ user }) => <p>{user?.name || "Guest" }</p>;
|
登录后复制
登录后复制
29. 用于渲染的数组Reduce
使用reduce将数据转换为元素。
1 | const ErrorMessage = ({ error }) => error && <p>{error.message}</p>;
|
登录后复制
登录后复制
30. 条件挂钩
有条件地使用钩子而不违反规则。
1 | const Wrapper = ({ Component }) => <Component />;
|
登录后复制
登录后复制
这些俏皮话展示了 React 的优雅和多功能性。通过利用这些简洁的模式,您可以编写更清晰、更易于维护的代码,从而提高工作效率。尝试将它们合并到您的项目中,看看有何不同!
以上是React OneLiners 提高编码效率的详细内容。更多信息请关注PHP中文网其他相关文章!