Входное значение - onChange vs Manual - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь передать массив строк через контекстный API от дочернего элемента к родителю.

Я делал это с помощью ввода who pu sh значения, записанного в нем, для другого ввода который отображает все значения, выдвинутые первым.

(просто, чтобы показать пользователю его значения).

проблема в том, что метод onChange не запускается при нажатии значения на этот вход, и срабатывает только тогда, когда я вручную пишу на этом входе.

Функция midWay должна срабатывать при изменении значения, если оно является пропуском "value".

midWay = (e: any) => {
    const {
        target: {
            name,
            value
        },
    } = e;
    const {
        takeValue
    } = this.props;
    if (takeValue) {
        takeValue(name, value);
    }
};

handleChange = (e: any) => {
    const {
        list,
        tempVal,
        value
    } = this.state;
    let {
        listValue,
        read
    } = this.props;
    this.setState({
        list: list.concat([`${tempVal}`]),
    });
    listValue = list;
    if (tempVal.length > 0) {
        this.setState({
            length: true
        });
    }
    if (list.length > 4) {
        read = true;
    }
    this.setState({
        value: '',
    });
    e.preventDefault();
};

getTags = (e: any) => {
    const {
        list,
        tempVal
    } = this.state;
    let {
        listValue
    } = this.props;
    const {
        target: {
            name,
            value
        },
    } = e;
    const {
        changeValue
    } = this.props;
    listValue = list;
    if (changeValue) {
        changeValue(name, value);
    }
    this.setState({
        tempVal: value
    });
};

render() {
    const {
        value,
        list,
        length,
        tags
    } = this.state;
    const {
        Header,
        inputName,
        type,
        read
    } = this.props;
    let {
        listValue
    } = this.props;
    listValue = list;
    return ( <
        TagsContextConsumer > {
            ({
                tags,
                changeValue,
                takeValue
            }) => ( <
                Row >
                <
                W20 >
                <
                form className = "container"
                noValidate autoComplete = "on" >
                <
                TextField id = "standard-name"
                name = "tags"
                label = "Your Tags"
                className = "textFields"
                value = {
                    listValue
                }
                margin = "normal"
                InputProps = {
                    {
                        readOnly: read,
                    }
                }
                type = "text"
                onChange = {
                    this.midWay
                }
                /> <
                hr / >
                <
                TextField id = "standard-name"
                name = {
                    inputName
                }
                label = {
                    Header
                }
                className = "textFields"
                value = {
                    value
                }
                margin = "normal"
                InputProps = {
                    {
                        readOnly: read,
                    }
                }
                type = {
                    type
                }
                onChange = {
                    this.getTags
                }
                />

                <
                RegularButton onClick = {
                    this.handleChange
                } > Add < /RegularButton> <
                /form> <
                /W20> <
                /Row>
            )
        } <
        /TagsContextConsumer>
    );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...