学習めも。

Python、Anaconda学習中🔰 ブログ引っ越ししました😄よろしくお願いします!https://noeiganolife.com/

記録用🔰

プログラミング以外の記事はこちら

Reduxサンプルコード集

formを作成してlogを出す,③nameの文字数が3文字以上の時のみsaveボタンを押してlogを出す

▼Content.js

        let save_disabled = true;
        if (props.formData.conditions.name.length >= 3 ){
                save_disabled = false;
            }
        return (
            <div>
                <div>
                    <InputId   onClickButtonId = {props.onClickButtonId}/>
                    <InputName   onClickButtonName = {props.onClickButtonName}/>
                    <button type="button"
                        className="btn btn-outline-success"
                        disabled = { save_disabled }
                        onClick={(e) => props.onSaveItem()} >
                        SAVE
                    </button>
                </div>
            </div>
        );
    // input_id
    function InputId(props) {
        return (
            <div className="form-group">
                <label >ID</label>
                <input id="1"
                    type="text"
                    className="form-control"
                    onChange={(e) => props.onClickButtonId(e)}
                    />
            </div>
        )
    }
    // input_name
    function InputName(props) {
        return (
            <div className="form-group">
                <label>Name</label>
                <input id="2"
                    type="text"
                    className="form-control"
                        onChange={(e) => props.onClickButtonName(e)}
                />
            </div>
        )
    }

▼src/Appjs

        class App extends Component {
            constructor(props) {
                super(props);
            }
            // form_id
            onClickButtonId = (e) => {
                this.props.formID(e.target.value);
            }
            // form_name
            onClickButtonName = (e) => {
                this.props.formName(e.target.value);
            }
            onSaveItem = (e) => {
                console.log("SAVE_ID: ",this.props.conditions.id);
                console.log("SAVE_NAME: ",this.props.conditions.name);
            }
            render() {
                // form
                const contentHandler = ({ onClickButtonId, onClickButtonName,onSaveItem}) => ({ onClickButtonId, onClickButtonName,onSaveItem})
                return (
                    <div >
                        ⑥redux編
                        <div className="main">
                            <div className="container">
                                <Top />
                                <Content {...contentHandler(this)} formData={this.props}/>
                            </div>
                        </div>
                    </div>
                );
            }
        }

▼containers/Appjs

        import { connect } from 'react-redux';
        import * as actions from '../actions';
        import App from '../App';
        const mapStateToProps = state => {
            const  {conditions} = state;
            return {conditions}
        }
        const mapDispatchToProps = dispatch => {
            return {
                // form_id,name
                formID: (value) => dispatch(actions.formID(value)),
                formName: (value) => dispatch(actions.formName(value))
            }
        }
        export default connect(mapStateToProps, mapDispatchToProps)(App)

▼src/actions.js

        export const formID = (value) => {
            return {
                type: 'FORM_ID',
                payload: { value }
            };
        }
        export const formName = (value) => {
            return {
                type: 'FORM_NAME',
                payload: { value }
            };
        }

▼src/createStore.js

        import { createStore as reduxCreateStore, combineReducers } from "redux";
        import { conditions } from "./reducers";
        export default function createStore() {
            const store = reduxCreateStore(
                combineReducers({
                    conditions
                })
            );
            return store;
        }
    ex)src/reducres.js
        'use strict';
        const initialState = {
            id: "",
            name: ""
        }
        export function conditions(state = initialState, action) {
            let newState = JSON.parse(JSON.stringify(state));
            switch (action.type) {
                case 'FORM_ID':
                    newState.id = action.payload.value;
                    break;
                case 'FORM_NAME':
                    newState.name = action.payload.value;
                    break;
                default:
                    return state;
            }
            console.log(newState);
            return newState;
        };