简体   繁体   中英

Form.File for image upload not working in react

I have this code to upload an image with react but it is not working and i have no idea why? can someone help plz

return (
    <div>
        <FormContainer>
            <h1>Edit Product</h1>

            {loading ? <Loader /> : error ? <Message variant='danger'>{error}</Message>
                : (
                    <Form onSubmit={submitHandler}>


                        <Form.Group controlId='image'>
                            <Form.Label>Image</Form.Label>
                            <Form.Control

                                type='text'
                                placeholder='Enter image'
                                value={image}
                                onChange={(e) => setImage(e.target.value)}
                            >
                            </Form.Control>

                            <Form.File
                                id='image-file'
                                label='Choose File'
                                onChange={uploadFileHandler}
                                custom
                            >

                            </Form.File>
                            {uploading && <Loader />}

                        </Form.Group>

                        <Button type='submit' variant='primary'>
                            Update
                    </Button>

                    </Form>
                )}

        </FormContainer >
    </div>

)

the problem is with Form.File cz when i delete it the form will load

Here the error i get in the console: react-dom development js 28439 Uncaught Error: Element type is invalid:

expected a string (for built-in components) 
or a class/function (for composite components) but got:
undefined. 
You likely forgot to export your component 
from the file it's defined in, 
or you might have mixed up default and named imports.

Check the render method of `ProductEditScreen`.

So the problem was Form.File is not from react-bootstrap v2 it must be from v1 The solution was to replace this:

<Form.File
     id='image-file'
     label='Choose File'
     onChange={uploadFileHandler}
     custom
>

With Form Control like that:

                            

<Form.Control
    type='file'
    id='image-file'
    label='Choose File'
    custom
    onChange={uploadFileHandler}
>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM