sbyeol3 / articles

Learn.. Run.. ๐Ÿƒ
34 stars 1 forks source link

[์ •๋ฆฌ] React Conf 2021 #25

Open sbyeol3 opened 2 years ago

sbyeol3 commented 2 years ago

"Great User Experience"

First Block ๐Ÿ‘€

Keynote

Suspense

if (isLoading) return <Spinner />;
return (...);

// declarative way !
<Suspense fallback={<Spinner />}>
  <List pageId={pageId} />
</Suspese>

"design centric idea"

Concurrent Redering : "A behind-the-scenes capability in React that powers features like Suspense"

"what์— ์ง‘์ค‘ํ•˜๋ผ, React๋Š” how์— ์ง‘์ค‘ํ•œ๋‹ค . . "

React without memo

Xuan Huang

React Forget

example code

function TodoList({ visibility, themeColor }) {
  const [todos, setTodos] = useState(initialTodos);
  const handleChange = todo => setTodos(todos => getUpdated(todos, todo));
  const filtered = getFiltered(todos, visibility);

  return (
    <div>
      <ul>
        {filtered.map(todo => (
          <Todo key={todo.id} todo={todo} onChange={handleChange} />
        ))}
      </ul>
      <AddTodo setTodos={setTodos} themeColor={themeColor} />
    </div>
  );
}
function TodoList({ visibility, themeColor }) {
  const [todos, setTodos] = useState(initialTodos)
  let hasVisibilityChanged, hasThemeColorChanged, hasTodosChanged, memoCache

  if (hasVisibilityChanged || hasThemeColorChanged || hasTodosChanged) {
    const handleChange = memoCache[0] || (memoCache[0] = (todo) => setTodos((todos) => getUpdated(todos, todo)))

    let filtered, jsx_todos
    if (hasVisibilityChanged || hasTodosChanged) {
      filtered = memoCache[1] = getFiltered(todos, visibility)
      jsx_todos = memoCache[2] = (
        <ul>
          {filtered.map((todo) => (
            <Todo key={todo.id} todo={todo} onChange={handleChange} />
          ))}
        </ul>
      )
    } else {
      filtered = memoCache[1]
      jsx_todos = memoCache[2]
    }
  }

  const jsx_addTodo = hasThemeColorChanged ? (memoCache[3] = <AddTodo setTodos={setTodos} themeColor={themeColor} />) : memoCache[3]

  return (
    <div>
      {jsx_todos}
      {jsx_addTodo}
    </div>
  )
}

Final Block

React 18 for External Store Libraries

Daishi Kato

useSyncExternalStore

Accessible Japanese Form Components with React

Tafu Nakazaki (SmartHR)

sbyeol3 commented 2 years ago

SSR๊ณผ CSR

์ฐธ๊ณ 

SSR (Server Side Rendering)

CSR (Client Side Rendering)

sbyeol3 commented 2 years ago

React Suspense docs

It's a mechanism for data fetching libraries to communicate to React that the data a component is reading is not ready yet