gpt4 book ai didi

reactjs - Redux 形式,提供给 'value' 的类型 'number' 的无效 prop 'TextInput' ,预期为 'string'

转载 作者:行者123 更新时间:2023-12-03 13:19:32 24 4
gpt4 key购买 nike

我在 redux-form 字段中使用自定义组件,如下所示。

<Field name="height" parse={value => Number(value)} component={NumberInput} />

自定义组件使用 React Native 的 TextInput 组件,如下所示:

import React from 'react';
import PropTypes from 'prop-types';
import { View, Text, TextInput, StyleSheet } from 'react-native';
import { COLOR_PRIMARY } from '../constants';

const styles = StyleSheet.create({
inputStyle: {
height: 30,
width: 50,
marginBottom: 10,
borderColor: COLOR_PRIMARY,
borderWidth: 2,
textAlign: 'center',
},
errorStyle: {
color: COLOR_PRIMARY,
},
});

const NumberInput = (props) => {
const { input: { value, onChange }, meta: { touched, error } } = props;
return (
<View>
<TextInput
keyboardType="numeric"
returnKeyType="go"
maxLength={3}
style={styles.inputStyle}
value={value}
onChangeText={onChange}
/>
{touched &&
(error && (
<View>
<Text style={styles.errorStyle}>{error}</Text>
</View>
))}
</View>
);
};

NumberInput.propTypes = {
meta: PropTypes.shape({
touched: PropTypes.bool.isRequired,
error: PropTypes.string,
}).isRequired,
input: PropTypes.shape({
// value: PropTypes.any.isRequired,
onChange: PropTypes.func.isRequired,
}).isRequired,
};

export default NumberInput;

我想将高度字段输入的值存储为数字而不是字符串类型。因此,我使用 parse 将字符串转换为数字,如您在字段中看到的那样。

我能够做到这一点,但不断收到黄框警告:

 Invalid prop 'value' of type 'number' supplied to 'TextInput', expected 'string'

已尝试将 PropType 值设置为任意、字符串、数字或 oneOfType 字符串或数字,但似乎没有任何效果。还尝试在 Field 和 TextInput 中设置 type="number"以及 type="text"。

感谢任何帮助...

最佳答案

基本上,在你的 props 中你传递的是 value 的数值。你必须以字符串的形式传递它。你可以像这样编辑你的代码:

<TextInput
keyboardType="numeric"
returnKeyType="go"
maxLength={3}
style={styles.inputStyle}
value={`${value}`} //here
onChangeText={onChange}
/>

关于reactjs - Redux 形式,提供给 'value' 的类型 'number' 的无效 prop 'TextInput' ,预期为 'string',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46984544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com