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

render-shallow

v2.0.0

Published

A utility for shallow rendering in React

Downloads

21

Readme

renderShallow

A utility for shallow rendering React components in tests.

Build Status

Installation

It's available on npm as render-shallow, so you can run:

npm install --save render-shallow

Usage

renderShallow shallow renders a React element, using React's ShallowRenderer test utility. It wraps the renderer creation, and returns the rendered component, along with some helpers to rerender the element, should it change.

API

renderShallow
// import renderShallow from 'render-shallow'
// or:
// const renderShallow = require('render-shallow')

renderShallow(element ReactElement, context ReactContext[Object, optional])

returns: Object { output ReactElement, rerender function, rerenderElement function, instance function }

More on React's context.

.output

The React element returned by the shallow renderer.

rerender
rerender()

returns: React element

Function that gets the rendered output again. Useful for when a component's state has changed and the DOM should be updated.

rerenderElement
rerenderElement(newElement ReactElement, context Object[optional. Uses initial context, if specified])

Function that renders newElement with the same render instance that renderShallow used. If context was initially specified, that will be reused, otherwise you can supply it. Useful for when you want to tests a props update to your component.

instance
instance()

returns: Element instance

Function that gets the mounted instance of the element. Useful if you want to check or use instance state or lifecycle methods.

Example

  // if you just want the shallow-renderer component
  const component = renderShallow(<AReactComponent />).output

  // if you want to rerender
  const { output, rerender } = renderShallow(<AReactComponent />)

  // if you want to rerender the element
  const { output, rerenderElement } = renderShallow(<AReactComponent />)

  // if you want the component's instance
  const { instance } = renderShallow(<AReactComponent />)

Why

I found that in most of the React component tests I wrote, I simply wanted a shallow rendered component to test. The ShallowRenderer API is a little verbose, between the creation and the getting of the output. So I started abstracting that (the .output returned from renderShallow). When I found myself wanting to rerender the component, either because of state or props changes, I added the ability to both re-fetch the output (rerender), or render the element again with new props (rerenderElement). Some time later, when I wanted to test a lifecycle method not part of the shallow render lifecycle, I added instance() so I could call the lifecycle hook directly on the element instance.

Development

  • npm run compile - Builds a distributable version of the project

  • npm start - Runs tests and reruns on file change

  • npm test - Runs tests once

  • npm lint - Lints javascript