Обновление записей в Firebase (redux-реагировать) - PullRequest
1 голос
/ 26 октября 2019

Я застрял в проекте и, честно говоря, я не знаю, как его решить (я совершенно нов, прежде чем вы судите)

, так что это мой код:

class EditProfile extends Component {
  state = {
    företagsnamn: '',
    organisationsnummer: '',
  };

  handleChange = e => {
    this.setState({
      [e.target.id]: e.target.value
    });
  };
  handleSubmit = e => {
    e.preventDefault();
    // console.log(this.state);
    this.props.editProfile(this.state);
    this.props.history.push("/dash");
  };
  render() {
    const { auth, profile } = this.props;
    if (auth.isEmpty) return <Redirect to="/dash" />;
    return (
      <div >        
        <form className="white" onSubmit={this.handleSubmit}>
          <div className="row">
            <div className="col xl6 l6 m6 s12">
 <label>Foretagsnamn:</label>
          <input
            type="text"
            disabled
            placeholder={profile.foretagsnamn}
            id="foretagsnamn"
            onChange={this.handleChange}
            />
            </div>
            <div className="col xl6 l6 m6 s12">
            <label>organisationsnummer:</label>
          <input
            type="number"
            placeholder={profile.organisationsnummer}
            id="organisationsnummer"
            onChange={this.onChange}
            />
            </div>
            </div>


<div className="input-field">
          <button className="btn orange lighten-1" style={{width:'100%'}} >Submit</button>
          { }
        </div>
          </form>
</div>
}}


const mapStateToProps = state => {
  return {
    auth: state.firebase.auth,
    profile: state.firebase.profile
  };
};

const mapDispatchToProps = dispatch => {
  return {
    editProfile: profil => dispatch(editProfile(profil))
  };
};

export default connect(
  mapStateToProps,
  mapDispatchToProps
)(EditProfile);

это было действие

export const editProfile = (profil) => {
    return (dispatch, getState, { getFirestore, getFirebase }) => {
        const firebase = getFirebase();
        const firestore = getFirestore();
        const profile = getState().firebase.auth
        console.log(profile)
        const authorId = getState().firebase.auth.uid;
        // const foretagsnamn = getFirestore().firestore.collection('users').doc(profile.uid).foretagsnamn
        // firebase.auth()
      firestore.collection('users').doc(profile.uid).set({
            // foretagsnamn: foretagsnamn,
            // organisationsnummer: profil.organisationsnummer,
            adress: profil.adress,
            ort: profil.ort,
            telefonnummer: profil.telefonnummer,
            postnummer: profil.postnummer, 

        }, { merge: true }
        ).then(() => {
            dispatch({ type: 'UPDATE_SUCCESS' });
          }).catch(err => {
            dispatch({ type: 'UPDATE_ERROR' }, err);
          });
        }}

и это редуктор

 const editProfileReducer = (state = initState, action) => {
    switch (action.type) {
      case "EDITPROFILE_ERROR":
        return {
          ...state,
        editError: action.error
    };
    case "EDITPROFILE_SUCCESS":
        return {
          ...state,
          user:action.user

    };
      default:
      return state;
    }
  }

  export default editProfileReducer;

, однако, когда я нажимаю кнопку отправки, это показывает эту ошибку:

FirebaseError: FunctionCollectionReference.doc () требует, чтобы его первый аргумент имел тип непустую строку, но это было: undefined

PS: решено. Действие было неверным. Я изменил ´´´const profile = getState (). Firebase.auth``` ** вместо профиля. **

Открыт, если кому-то нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...