1.1.13 • Published 2 years ago

react-utils-component v1.1.13

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

React Utils Component

Motivation

This project is inspired by solidjs and vuejs.

Install Package

$ npm install react-utils-component
$ yarn add react-utils-component

Usage

Show

Component for conditional rendering.

ShowProps

PropsTypeDescription
whenbooleanConditions to be used for conditional rendering.
fallbackJSX.Element \| undefinedRendered when the condition is false.
childrenReactNodeRendered when the condition is true.

Switch-Match

This component is useful when there are multiple conditions like switch-case.

SwitchProps

PropsTypeDescription
fallbackJSX.Element \| undefinedIf all the conditions of the Match component, which is a child component, are not met, it is rendered.
childrenReactNodeLocate Match Components

MatchProps

PropsTypeDescription
whenboolean \| undefinedIf true, the child component is rendered.
childrenReactNodeRendered when the condition is true.

List

This is a component inspired by methods in Array in javascript.

List.Map

It works the same as an Array's map.

PropsTypeDescription
eachT[]The array you want to iterate over.
children(item: T, index?: number) => UThe first argument contains an item of the same type as the single type of each. The second argument is index. Just return JSX.Element you want to iterate over.

List.Filter

It works the same as the Array's filter.

PropsTypeDescription
eachT[]The array you want to iterate over.
predicate(item: T) => booleanA function that accepts up to one arguments. The filter method calls the predicate function one time for each element in the array.
children(item: T, index?: number) => UThe first argument contains an item of the same type as the single type of each. The second argument is index. Just return JSX.Element you want to iterate over.

Example

Show

const [role, setRole] = useState('user')

<Show when={role === "admin"} fallback={<p>Role is User</p>}>
  <p>Role is Admin</p>
</Show>

Switch-Match

const [role, setRole] = useState('user')

<Switch fallback={<p>This is Default Children</p>}>
  <Match when={role === "user"}>
    <p>User Component</p>
  </Match>
  <Match when={role === "admin"}>
    <p>Admin Component</p>
  </Match>
</Switch>

List.Map

const todos = [
  {
    userId: 1,
    id: 1,
    title: 'delectus aut autem',
    completed: false,
  },
  {
    userId: 1,
    id: 2,
    title: 'quis ut nam facilis et officia qui',
    completed: false,
  },
  {
    userId: 1,
    id: 3,
    title: 'fugiat veniam minus',
    completed: false,
  },
  {
    userId: 1,
    id: 4,
    title: 'et porro tempora',
    completed: true,
  },
  {
    userId: 1,
    id: 5,
    title: 'laboriosam mollitia et enim quasi adipisci quia provident illum',
    completed: false,
  },
];

<List.Map each={todos}>
  {(todo => (
    <li key={todo.id}>
      <h2>{todo.title}</h2>
    </li>
  ))}
</List.Map>

List.Filter

const todos = [
  {
    userId: 1,
    id: 1,
    title: 'delectus aut autem',
    completed: false,
  },
  {
    userId: 1,
    id: 2,
    title: 'quis ut nam facilis et officia qui',
    completed: false,
  },
  {
    userId: 1,
    id: 3,
    title: 'fugiat veniam minus',
    completed: false,
  },
  {
    userId: 1,
    id: 4,
    title: 'et porro tempora',
    completed: true,
  },
  {
    userId: 1,
    id: 5,
    title: 'laboriosam mollitia et enim quasi adipisci quia provident illum',
    completed: false,
  },
];

{/* Only render items for which `completed` is `true`. */}
<List.Filter
  each={todos}
  predicate={todo => todo.completed}
>
  {(todo => (
    <li key={todo.id}>
      <h2>{todo.title}</h2>
      <p>
        {todo.completed ? 'Completed!!!' : 'Not Completed'}
      </p>
    </li>
  ))}
</List.Filter>
1.1.13

2 years ago

1.1.12

2 years ago

1.1.11

2 years ago

1.1.10

2 years ago

1.0.10

2 years ago

1.0.9

2 years ago

1.0.8

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago