npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@anew/provider

v2.2.2

Published

Anew Packages Provider

Downloads

68

Readme

@anew/provider

A small util for providing and connecting store to application.

🔥🔥🔥  For Hooks see the @anew/hooks package 🔥🔥🔥

Table of Contents

Installation

To install anew directly into your project run:

npm i @anew/provider -S

for yarn users, run:

yarn add @anew/provider

Usage

import React from 'react'
import Store from '@anew/store'
import Provider from '@anew/provider'
import Router from '@anew/router'

class App extends React.Component {
  static mapStateToProps = ({ state, getters }) => ({
    count: state.count
  })

  static mapDispatchToProps = ({ actions, reducers }) => ({
    inc: actions.inc
  })

  render() {
    // Access Connected Props
    const { count, inc } = this.props

    return (
      <center>
        <span>{count}</span>
        <hr />
        <button onClick={inc}>INC</button>
      </center>
    )
  }
}

// Connect App to Store
const ConnectedApp = Provider.connect(App)

// Create App Core Store
// See @anew/store for more on Store
const AppStore = new Store({
  name: 'core',

  state: {
    count: 1
  },

  reducers: {
    inc: state => ({
      count: state.count + 1
    })
  },

  getters: {
    countDoubled: state => state.count * 2
  }
})

// Share AnewStore with entire App
Provider.use(AppStore)

// Mount wrapped App to DOM
ReactDOM.render(Provider.wrap(ConnectedApp), document.getElementById('root'))

Parameters

Provider.wrap((Component: ReactComponent), {
  Provider: ReactComponent
})

Component: Entry react component to Application.

Provider (Optional): A react provider that get passed the store as a prop.

The wrap method returns the Component wrapped around the provider with the configured store. This could be used with any component that you want to access some store. Most often, this method is used to provide the application's root store to the entire application. Note, you should not pass the id parameter to wrap a sub component from the appliation as that attempts to mount the component to the DOM at the provided element id.

import Provider, { AnewProvider } from '@anew/provider'

class TodoComponent extends React.Component {...}

const TodoProvider = new AnewProvider(todoStore)

// Alternative to above
const TodoProvider = new AnewProvider()
TodoProvider.use(todoStore)

// @return
//
// <Provider store={todoStore}>
//     <TodoComponent />
// </Provider>
TodoProvider.wrap(TodoComponent)
Provider.connect(Component)

// or
// you may extract the connect methods
// from the Component class and pass
// it directly to Provider.connect({...})
Provider.connect(Config)(Component)

The connect method is not different fromt the react-redux's connect method except that it passes an addition parameter to mapStateToProps which is the provided store's getState method for accessing anew's store selectors.

Provider.use(StoreObject)

An anew or redux store object. See redux provider for more information.