New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

@dkh-dev/reduxie

Package Overview
Dependencies
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@dkh-dev/reduxie

A redux toolkit for simple use cases

latest
Source
npmnpm
Version
1.1.6
Version published
Maintainers
1
Created
Source

@dkh-dev/reduxie

A redux toolkit for simple use cases

Inspired by @reduxjs/toolkit.

Why all these reinventing the wheel?

@reduxjs/toolkit makes use of immer, which isn't very useful when the project is relatively small. This utility instead encourages the use of setter-only action creators.

@reduxjs/toolkit also comes with default middlewares that cause poor performance when dispatching large objects (in development only, but still bad).

Example

redux/slice/profile.js

import { createSlice } from '@dkh-dev/reduxie'

const { slice, selectors, actions } = createSlice('profile', {
  name: null,
})

export default slice
export const { getName } = selectors
export const { setName } = actions

redux/store.js

import { configureStore } from '@dkh-dev/reduxie'
import thunk from 'redux-thunk'
import profile from './slice/profile'

const store = configureStore({
  slices: [ profile ],
  middlewares: [ thunk ],
})

export default store

redux/actions.js

import api from '../api'
import { setName } from './slice/profile'

export const login = credentials => async dispatch => {
  const user = await api('/login', credentials)

  // on logged in
  dispatch(setName(user.name))
}

components/profile.js

import React from 'react'
import { useSelector } from 'react-redux'
import { nameSelector } from '../redux/slice/profile'

const Profile = () => {
  const name = useSelector(nameSelector)

  return <p>Name: { name }</p>
}

export default Profile

components/login.js

import React from 'react'
import { useDispatch } from 'react-redux'
import LoginForm from './login-form'
import { login } from '../redux/actions'

const Login = () => {
  const dispatch = useDispatch()

  const handleSubmit = (username, password) => {
    dispatch(login({ username, password }))
  }

  return <LoginForm onSubmit={ handleSubmit } />
}

export default Login

Keywords

reduxie

FAQs

Package last updated on 17 Jan 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts