Skip to content

Back to React Recipes

Ways to use `defaultProps`

defaultProps is an object you set on your component to provide default values for your properties. If your component gets initialized without a property (meaning its value is undefined), you'll get its default value instead. Note that null is a valid value that will not fall back to the default.

The main purpose of defaultProps is to plug any “holes” in your properties.

One thing I like to do is provide empty functions to any callbacks my component accepts, so that when I invoke them I don't need to check whether they've been passed:

class Slider extends React.Component {
	onChange() {
		// no need to check that this.props.onChange exists
		this.props.onChange(this.state.value);
	}
}

Slider.defaultProps = {
	onChange: value => {}
};

defaultProps is also a good way to document the properties your component accepts:

Slider.defaultProps = {
	// A number that defines the minimum value for the slider
	min: 0,

	// A number that defines the maximum value for the slider
	max: 100,

	// A callback that gets invoked each time the slider's value changes
	onChange: value => {}
};

You may even go further and document optional properties, whose default value is undefined:

class Slider extends React.Component {
	onChange() {
		this.props.onChange(this.state.value, this.props.property);
	}
}

Slider.defaultProps = {
	// When defined, the property will be sent along with the value
	// on the `onChange` callback
	property: undefined
};