Ответы пользователя по тегу Redux
  • 'props' is not defined no-undef. Что я делаю не так?

    w13vitaliy
    @w13vitaliy
    self-taught developer since 2020
    у вас в компоненте Dialogs передается в props функция sendMessage вы должны ее прокинуть в компонент AddMessageForm :



    import React from 'react';
    import classes from './Dialogs.module.css';
    import DialogItem from "./DialogItem/DialogItem";
    import Message from "./Message/Message";
    import {Redirect} from "react-router-dom";
    import {Field, Form, Formik} from 'formik';
    
    const Dialogs = (props) => {
        let state = props.dialogsPage;
    
        let dialogsElements = state.dialogs
            .map(el => <DialogItem name={el.name} key={el.id} id={el.id} avatar={el.avatar}/>);
        let messagesElements = state.messages
            .map(el => <Message message={el.message} key={el.id}/>);
    
    
        if (!props.isAuth) return <Redirect to={"/login"}/>;
    
        return (
            <div className={classes.dialogs}>
                <div className={classes.dialogsItems}>
                    {dialogsElements}
                </div>
                <div className={classes.messages}>
                    <div>{messagesElements}</div>
                </div>
                <AddMessageForm sendMessage={props.sendMessage}/>
            </div>
        )
    }
    
    
    
    const AddMessageForm = (props) => {
    const initialValues = {
        newMessageBody: ''
    }
    const onSubmit = values => {
        props.sendMessage(values.newMessageBody);
        console.log('запись', values)
    }
        return (
            <Formik initialValues={initialValues} onSubmit={onSubmit}>
                <Form>
                    <div>
                        <div>
                            <Field as='textarea'
                                   id='newMessageBody'
                                   name='newMessageBody'/>
                        </div>
                        <button type='submit'>Submit</button>
                    </div>
                </Form>
            </Formik>
        )
    }
    
    export default Dialogs;
    Ответ написан
    2 комментария