Security News
Weekly Downloads Now Available in npm Package Search Results
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.
onno-react
Advanced tools
Onno propTypes
for React
yarn add onno-react
You can use onno-react
in place of onno
since it re-exports the API:
import styled from "styled-components"
import { display, padding } from "onno-react"
const Box = styled.div(display, padding)
// [{ display: "flex" }, { padding: "10px" }]
<Box display="flex" padding="10px" />
// [{ display: "grid" }, { padding: "20em" }]
<Box d="grid" p="20em" />
To add propTypes
for onno's render functions to your components:
import styled from "styled-components"
import { display, padding, propTypes } from "onno-react"
const Box = styled.div(display, padding)
Box.propTypes = propTypes(display, padding)
// Warning: Failed prop type: Invalid prop "display" supplied to "Box".
// Warning: Failed prop type: Invalid prop "padding" supplied to "Box".
<Box display={true} padding={[false]} />
// Warning: Failed prop type: Invalid prop "d" supplied to "Box".
// Warning: Failed prop type: Invalid prop "p" supplied to "Box".
<Box d={true} p={[false]} />
Render functions can be passed to propTypes
as an array or list of arguments:
import { display, padding, propTypes } from "onno-react"
// Array of render functions
const propTypes2 = propTypes([display, padding])
// List of render functions
const propTypes1 = propTypes(display, padding)
Following DRY principles, wrap your render functions in an array or use onno's compose
method:
import styled from "styled-components"
import { display, padding, compose, propTypes } from "onno-react"
const styles = [display, padding]
const boxSet = compose({
name: "box",
renderers: styles
})
// Spread the styles array
const Box1 = styled.div(...styles)
Box1.propTypes = propTypes(styles)
// Pass the composed renderer
const Box2 = styled.div(boxSet)
Box2.propTypes = propTypes(boxSet)
To add other propTypes
alongside the render function props:
import styled from "styled-components"
import { display, padding, propTypes } from "onno-react"
import { number, string } from "prop-types"
const styles = [display, padding]
const Box = styled.div(...styles)
Box.propTypes = {
...propTypes(styles),
foo: string.isRequired,
bar: number.isRequired
}
To sanitize props
before applying them to a component, you can use onno's omit
function:
import { omit, display, padding } from "onno-react"
const omitPropsKeys = omit({
propsKeys: ["foo", "bar"]
})
const omitRenderers = omit({
renderers: [display, padding]
})
const omitComposite = omit({
propsKeys: ["foo", "bar"],
renderers: [display, padding]
})
const props = {
foo: "foo",
bar: "bar",
baz: "baz",
display: "block",
d: "inline-block",
padding: 4,
p: 8
}
// {
// baz: "baz",
// display: "block",
// d: "inline-block",
// padding: 4,
// p: 8
// }
omitPropsKeys(props)
// {
// foo: "foo",
// bar: "bar",
// baz: "baz"
// }
omitRenderers(props)
// {
// baz: "baz"
// }
omitComposite(props)
FAQs
Onno propTypes for React
The npm package onno-react receives a total of 2,375 weekly downloads. As such, onno-react popularity was classified as popular.
We found that onno-react demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
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.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.
Security News
A Stanford study reveals 9.5% of engineers contribute almost nothing, costing tech $90B annually, with remote work fueling the rise of "ghost engineers."
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.