ReactJS: this.props.addContact не является функцией

#typeerror

#ошибка типа

Вопрос:

Я новичок в react и работаю над приложением, которое может управлять контактом, и у меня возникает эта ошибка в любое время, когда я хочу добавить к нему контакт. Вот как выглядит код; импортируйте React, {Component } из ‘react’; импортируйте панель навигации из ‘./ Navbar’;

класс addContact расширяет React .Компонент {

     state = {
        firstName: '',
        lastName: '',
        email: '',
        phone: '',
        balance: ''
    };

handleSubmit = (e) => {
    e.preventDefault();
    this.props.addContact(this.state);
};
handleChange = (e) => {
    this.setState({
        [e.target.name]: e.target.value
    })
};

render() {
    return (
        <>
        <Navbar />
        <div className="add">
            <br></br>
            <div className="card">
                <div className="card-header">Add Client</div>
                <div className="card-body">
                    <form onSubmit={this.handleSubmit}>       
                        <label htmlFor="name">First Name:</label>
                        <input 
                        name="firstName"
                         placeholder="firstName" 
                         value={this.state.firstName} 
                         onChange={this.handleChange} />
                         <br></br>
                        <label htmlFor="name">Last Name:</label>
                            <input
                             name="lastName"
                             placeholder="lastName"
                              value={this.state.lastName}
                               onChange={this.handleChange} />
                               <br></br>
                        <label htmlFor="email">Email:</label>
                            <input
                             name="email"
                             placeholder="email"
                              value={this.state.email}
                               onChange={this.handleChange} />
                               <br></br>
                        <label htmlFor="phone">Phone:</label>
                            <input
                             name="phone"
                             placeholder="phone"
                              value={this.state.phone}
                                onChange={this.handleChange} />
                                <br></br>
                        <label htmlFor="balance">Balance:</label>
                        <input
                         name="balance"
                         placeholder="balance"
                          value={this.state.balance}
                           onChange={this.handleChange} />
                           <br></br>
                        <button className="btn-btn"><strong>Add</strong></button>
                    </form>
                </div>
            </div>
        </div>
        </>
    );
}
  

}

экспорт addContact по умолчанию;

Комментарии:

1. Привет, Кобби, это весь код? Кроме того, чего вы пытаетесь добиться от этого?

2. да, пожалуйста, это весь код, и я хочу иметь возможность обновлять или добавлять контакты в свой список

3. Проверьте мой ответ ниже

Ответ №1:

Вам нужно добавить переменную списка в ваше состояние как:

 state = {
    firstName: '',
    lastName: '',
    email: '',
    phone: '',
    balance: '',
    list: [],
};
  

Теперь, когда вы обновляете свой список, сделайте это:

 handleSubmit = (e) => {
    e.preventDefault();
    const { firstName, lastName, email, phone, balance, list } = this.state;
    const contact = {
        firstName: firstName,
        lastName: lastName,
        email: email,
        phone: phone,
        balance: balance,
    }
    const updateList = [...list, contact];
    this.setState({
        list: [...updateList]
    })
};
  

Вы также можете записать сокращение как

 handleSubmit = (e) => {
    e.preventDefault();
    const { firstName, lastName, email, phone, balance, list } = this.state;
    const contact = {
        firstName,
        lastName,
        email,
        phone,
        balance,
    }
    const updateList = [...list, contact];
    this.setState({
        list: [...updateList]
    })
};