|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- The hook fn doesn't set any styles on either of the prop fns (`getRootProps()`/`getInputProps()`).
-
- ### Using inline styles
-
- ```jsx harmony
- import React, {useMemo} from 'react';
- import {useDropzone} from 'react-dropzone';
-
- const baseStyle = {
- flex: 1,
- display: 'flex',
- flexDirection: 'column',
- alignItems: 'center',
- padding: '20px',
- borderWidth: 2,
- borderRadius: 2,
- borderColor: '#eeeeee',
- borderStyle: 'dashed',
- backgroundColor: '#fafafa',
- color: '#bdbdbd',
- outline: 'none',
- transition: 'border .24s ease-in-out'
- };
-
- const activeStyle = {
- borderColor: '#2196f3'
- };
-
- const acceptStyle = {
- borderColor: '#00e676'
- };
-
- const rejectStyle = {
- borderColor: '#ff1744'
- };
-
- function StyledDropzone(props) {
- const {
- getRootProps,
- getInputProps,
- isDragActive,
- isDragAccept,
- isDragReject
- } = useDropzone({accept: 'image/*'});
-
- const style = useMemo(() => ({
- ...baseStyle,
- ...(isDragActive ? activeStyle : {}),
- ...(isDragAccept ? acceptStyle : {}),
- ...(isDragReject ? rejectStyle : {})
- }), [
- isDragActive,
- isDragReject
- ]);
-
- return (
- <div className="container">
- <div {...getRootProps({style})}>
- <input {...getInputProps()} />
- <p>Drag 'n' drop some files here, or click to select files</p>
- </div>
- </div>
- );
- }
-
- <StyledDropzone />
- ```
-
- ### Using styled-components
-
- ```jsx harmony
- import React from 'react';
- import {useDropzone} from 'react-dropzone';
- import styled from 'styled-components';
-
- const getColor = (props) => {
- if (props.isDragAccept) {
- return '#00e676';
- }
- if (props.isDragReject) {
- return '#ff1744';
- }
- if (props.isDragActive) {
- return '#2196f3';
- }
- return '#eeeeee';
- }
-
- const Container = styled.div`
- flex: 1;
- display: flex;
- flex-direction: column;
- align-items: center;
- padding: 20px;
- border-width: 2px;
- border-radius: 2px;
- border-color: ${props => getColor(props)};
- border-style: dashed;
- background-color: #fafafa;
- color: #bdbdbd;
- outline: none;
- transition: border .24s ease-in-out;
- `;
-
- function StyledDropzone(props) {
- const {
- getRootProps,
- getInputProps,
- isDragActive,
- isDragAccept,
- isDragReject
- } = useDropzone({accept: 'image/*'});
-
- return (
- <div className="container">
- <Container {...getRootProps({isDragActive, isDragAccept, isDragReject})}>
- <input {...getInputProps()} />
- <p>Drag 'n' drop some files here, or click to select files</p>
- </Container>
- </div>
- );
- }
-
- <StyledDropzone />
- ```
|