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中文网其他相关文章!