未触发react-native-numeric-input更改事件

时间:2019-04-26 09:40:53

标签: react-native

我目前正在使用多个库(包括 react-native-numeric-input )进行反应项目,由于某些原因,这些库具有许多意外行为。

昨晚我一切正常,但是当我可以再看一看数字输入+和-按钮对任何单击均无响应时,我什至在onChange道具中添加了console.log进行测试如果值没有改变或事件未触发并且我什么也没得到。

此数字输入:

<NumericInput 
                            onChange={num => {
                                console.log(num);
                                this.setState({ updateItem: num}, this.saveChangedConfigs);
                                console.log('input', this.state);
                            }}
                            value={this.state.updateItem}
                            totalWidth={configValues.inw}
                            totalHeight={configValues.inh}
                            initValue={this.state.updateItem}
                            inputStyle={{ backgroundColor: '#f4f4f4'}}
                            containerStyle={styles.updateValue}
                            minValue={1}
                        />

这是两种更改状态的方法:

saveChangedConfigs = async () => {
        try {
            this.props.saveConfigs({
                stockpile: this.state.updateItem.toString(),
                data: this.state.updateData.toString(),
                delete: this.state.emptyFiles.toString(),
                autoUpdate: this.state.autoUpdate.toString(),
                language: this.state.language
            })

            await this.initConfigs();
        } catch (error) {
            console.log('save err', error);
        }
    }

initConfigs = async () => {
        const configs = await AsyncStorage.multiGet([
            'updateStockpile', 
            'updateData',
            'emptyPhone',
            'language',
            'autoUpdate'
        ])

        console.log("configs", configs)

        const confs = {
            stockpile: this.props.config.stockpile,
            autoUpdate: this.props.config.autoUpdate,
            language: this.props.config.language,
            data: this.props.config.data,
            delete: this.props.config.delete
        }

        await configs.map(conf => {
            switch(conf[0]){
                case 'updateStockpile': if(conf[1] !== null) confs.stockpile = conf[1]; break;
                case 'updateData': if(conf[1] !== null) confs.data = conf[1]; break;
                case 'emptyPhone': if(conf[1] !== null) confs.delete = conf[1]; break;
                case 'language': if(conf[1] !== null) confs.language = conf[1]; break;
                case 'autoUpdate': if(conf[1] !== null) confs.autoUpdate = conf[1]; break;
            }
        })

        await this.props.initConfigs(confs);

        await this.setState({
            language: confs.language,
            updateItem: Number(confs.stockpile),
            updateData: Number(confs.data),
            emptyFiles: Number(confs.delete),
            autoUpdate: confs.autoUpdate
        });
    }

这是我的初始状态:

this.state = {
            language: this.props.config.language,
            updateItem: Number(this.props.config.stockpile),
            updateData: Number(this.props.config.data),
            emptyFiles: Number(this.props.config.delete),
            autoUpdate: this.props.config.autoUpdate
        }

希望你们可以帮助我解决这个问题,或者如果您知道的话,也许可以建议另一种方法。

0 个答案:

没有答案