MichalBart
MichalBart

Reputation: 3

React Redux Input handle

I'm trying to handle simple input value using react-redux and then trying to display it. I know how to display it but i have no idea how to submit input value from component to redux store. I searched web and found nothing. Can someone explain how to do this? I'm totally new to react-redux

import React from "react";
import "./App.css";
import { connect } from "react-redux";
import { useState } from "react";
import { updateValue, addValue } from "./actions/inputActions";

function App(props) {
  const [value, setValue] = useState("");
  const handleChange = (e) => {
    setValue(e.target.value);
  };

  return (
    <div className="App">
      <form onSubmit={(value) => props.submitValue(value)}>
        <input onChange={handleChange} value={value} type="text" />
        <button type="submit">Add</button>
      </form>
      <h1>{props.value}</h1>
    </div>
  );
}
const mapStateToProps = (state) => {
  return {
    value: state.value,
  };
};
const mapDispatchToProps = (dispatch) => {
  return {
    submitValue: (e, value) => {
      e.preventDefault();
      dispatch(addValue(value));
    },
  };
};
export default connect(mapStateToProps, mapDispatchToProps)(App);

Upvotes: 0

Views: 61

Answers (1)

Aadil Mehraj
Aadil Mehraj

Reputation: 2614

Update your onSubmit function with the value stored in your local state, like this:

<form onSubmit={(e) => {
  e.preventDefault();
  props.submitValue(value)
}}>
  <input onChange={handleChange} value={value} type="text" />
  <button type="submit">Add</button>
</form>

And your mapDispatchToProps function like this:

const mapDispatchToProps = (dispatch) => {
  return {
    submitValue: (value) => {
      dispatch(addValue(value));
    },
  };
};

Upvotes: 1

Related Questions