現在ReactとReduxでtodoアプリを作っているのですが、送信ボタンを押してもInputの中の文字が入力されたままとなっていて、困っております。
本来であれば、e.preventDefaultで中身を更新できるはずですが、onChangeイベントをすでに使っているので使用できませんでした。
他に対策はあるのでしょうか?
以下がコードとです。
import React, { Component } from "react"; import TextField from "@material-ui/core/TextField"; import Button from "@material-ui/core/Button"; import { connect } from "react-redux"; import * as actionTypes from "../../store/actions/actions"; class Form extends Component { render() { return ( <div> <form onSubmit={(e) => e.preventDefault()}> <TextField onChange={(e) => this.props.onChangeHandler(e.target.value)} ></TextField> <Button onClick={() => this.props.onStoreResult(this.props.value)} style={{ color: "black" }} > 送信 </Button> </form> <ul> {this.props.add.map((l) => ( <li key={l.id}>{l.value}</li> ))} </ul> </div> ); } } const mapStateToProps = (state) => { return { value: state.change.value, add: state.add.todo }; }; const mapDisptchToProps = (dispatch) => { return { onStoreResult: (v) => dispatch({ type: actionTypes.ADD, value: v }), onChangeHandler: (e) => dispatch({ type: actionTypes.CHANGE, value: e }) }; }; export default connect(mapStateToProps, mapDisptchToProps)(Form);
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/23 03:42
2020/04/23 03:47
2020/04/24 04:15