The switch is off.
const BasicHooksExample = () => {
const [checked, setChecked] = useState(false);
const handleChange = nextChecked => {
setChecked(nextChecked);
};
return (
<div className="example">
<h2>Simple usage</h2>
<label>
<span>Switch with default style</span>
<Switch
onChange={handleChange}
checked={checked}
className="react-switch"
/>
</label>
<p>
The switch is <span>{checked ? "on" : "off"}</span>.
</p>
</div>
);
};
/* styles.css */
.react-switch {
vertical-align: middle;
margin-left: 4px;
}
class MaterialDesignSwitch extends Component {
constructor() {
super();
this.state = { checked: false };
this.handleChange = this.handleChange.bind(this);
}
handleChange(checked) {
this.setState({ checked });
}
render() {
return (
<div className="example">
<h2>Custom styling</h2>
<label htmlFor="material-switch">
<span>Switch with style inspired by Material Design</span>
<Switch
checked={this.state.checked}
onChange={this.handleChange}
onColor="#86d3ff"
onHandleColor="#2693e6"
handleDiameter={30}
uncheckedIcon={false}
checkedIcon={false}
boxShadow="0px 1px 5px rgba(0, 0, 0, 0.6)"
activeBoxShadow="0px 0px 1px 10px rgba(0, 0, 0, 0.2)"
height={20}
width={48}
className="react-switch"
id="material-switch"
/>
</label>
</div>
)
}
}
<label htmlFor="small-radius-switch">
<span>A switch all available styling options</span>
<Switch
checked={this.state.checked}
onChange={this.handleChange}
handleDiameter={28}
offColor="#08f"
onColor="#0ff"
offHandleColor="#0ff"
onHandleColor="#08f"
height={40}
width={70}
borderRadius={6}
activeBoxShadow="0px 0px 1px 2px #fffc35"
uncheckedIcon={
<div
style={{
display: "flex",
justifyContent: "center",
alignItems: "center",
height: "100%",
fontSize: 15,
color: "orange",
paddingRight: 2
}}
>
Off
</div>
}
checkedIcon={
<svg viewBox="0 0 10 10" height="100%" width="100%" fill="yellow">
<circle r={3} cx={5} cy={5} />
</svg>
}
uncheckedHandleIcon={
<div
style={{
display: "flex",
justifyContent: "center",
alignItems: "center",
height: "100%",
fontSize: 20
}}
>
☹
</div>
}
checkedHandleIcon={
<div
style={{
display: "flex",
justifyContent: "center",
alignItems: "center",
height: "100%",
color: "red",
fontSize: 18
}}
>
♥
</div>
}
className="react-switch"
id="small-radius-switch"
/>
</label>
<label htmlFor="disabled-switch">
<span>You can not click, drag or tab to it</span>
<Switch
onChange={() => {}}
checked
disabled
className="react-switch"
id="disabled-switch"
/>
</label>
All additional props that are not part of the react-switch API will be passed on to the nested <input /> element. In this example, we passed it the 'required' attribute. Other examples are aria-*-attributes, tabIndex, name etc.
<Switch
className="react-switch"
onChange={this.handleChange}
checked={this.state.checked}
required
/>
<Switch
onChange={() => setChecked(true)}
checked={checked}
className="react-switch"
/>
Use this if you do not want clicking on the label to cause the switch to toggle.
<p id="neat-label">Use this if you do not want clicking on the label to cause the switch to toggle.</p>
<Switch
className="react-switch"
onChange={this.handleChange}
checked={this.state.checked}
aria-labelledby="neat-label"
/>
If the meaning of the switch is self-evident to sighted users but not people who use screen readers, you can use the aria-label attribute.
<Switch
className="react-switch"
onChange={this.handleChange}
checked={this.state.checked}
aria-label="super secret label that is not visible"
/>
The full source code for this page can be found here.