React Patterns
1. Stateless function Stateless function là một cách tuyệt vời để define một reuseable components. Nó không có state, lifecycle của react, nó chỉ là một function. const Greeting = () => <div>Hello World!</div> Trường hợp nó nhận vào props và context. const Greeting = ...
1. Stateless function
Stateless function là một cách tuyệt vời để define một reuseable components. Nó không có state, lifecycle của react, nó chỉ là một function.
const Greeting = () => <div>Hello World!</div>
- Trường hợp nó nhận vào props và context.
const Greeting = (props, context) => <div style={{color: context.color}}>Hello {props.name}!</div>
- Có thể define local variables:
const Greeting = (props, context) => { const style = { fontWeight: "bold", color: context.color, } return <div style={style}>{props.name}</div> }
2. JSX spread attributes
Spread attributes là JSX feature. nó là một cú pháp ngắn gọn để truyển tất cả thuộc tính của object như JSX attrubutes.
// props written as attributes <main className="main" role="main">{children}</main> // props "spread" from object <main {...{className: "main", role: "main", children}} />
const FancyDiv = props => <div className="fancy" {...props} />
3. Destructuring arguments
Destructuring assignment is an ES2015 feature. It pairs nicely with props in Stateless Functions.
2 ví dụ dưới đây là tương đương.
const Greeting = props => <div>Hi {props.name}!</div> const Greeting = ({ name }) => <div>Hi {name}!</div>
const Greeting = ({ name, ...props }) => <div>Hi {name}!</div>
4. Conditional rendering
Nếu bạn thường xuyên sử dụng nhiều if else unless sẽ làm code cho bạn thêm dài và xấu hơn. if-else (tidy one-liners)
{condition ? <span>Rendered when `truthy`</span> : <span>Rendered when `falsey`</span> }
if-else (big blocks)
{condition ? ( <span> Rendered when `truthy` </span> ) : ( <span> Rendered when `falsey` </span> )}
5. Children types
React có thể render nhiều loại, trong hầu hết các trường hợp là array hoặc string.
string
<div> Hello World! </div>
array
<div> {["Hello ", <span>World</span>, "!"]} </div>