React Native 如何在Object中输入字符串数据?

s8vozzvw  于 2023-11-21  发布在  React
关注(0)|答案(3)|浏览(129)

我试图输入文本到innerState.feedType。但当我尝试时,它说无法读取属性'toString'的undefined如何修复我的代码?
这是我的代码

const [innerState, setInnerState] = useState<any>({
       feedType: 'bbong', 
        })

     const onChangeEtcfeedtype = useCallback((text) => {
          setInnerState( innerState['feedType'] = text)
       },[]);

        <TextInput
            placeholder="input."
            value={innerState.feedType}
            onChangeText={onChangeEtcfeedtype}
          />

字符串

mwg9r5ms

mwg9r5ms1#

你需要添加null-safety(?)操作符,因为状态是在渲染组件之后创建的。还需要返回对象上的新链接以重新渲染组件。

const [innerState, setInnerState] = useState<any>({
   feedType: 'bbong', 
    })

 const onChangeEtcfeedtype = (text) => {
      setInnerState({...innerState, innerState.feedType: text});
   };

    <TextInput
        placeholder="input."
        value={innerState?.feedType}
        onChangeText={onChangeEtcfeedtype}
      />

字符串

smtd7mpg

smtd7mpg2#

在这里,innerState['feedType'] = text你是直接改变状态,然后使用updater函数存储它,你不应该直接改变它。
你有一个 innerState,它是一个对象,它包含了feedType属性。所以,更新一个状态,你必须用相同的键和新的值传递对象。

  • 正确方式:*
setInnerState({feedType: text})

字符串

k0pti3hp

k0pti3hp3#

我认为这是你应该写的。关于错误。它看起来不像是来自这部分。它来自你的<TextInput />组件,可能是因为你对onChange event的操作造成的。

const [innerState, setInnerState] = useState<any>({
       feedType: 'bbong', 
     })

     const onChangeEtcfeedtype = useCallback((text) => {
          setInnerState({feedType: text})
       },[]);

        <TextInput
            placeholder="input."
            value={innerState.feedType}
            onChangeText={onChangeEtcfeedtype}
          />

字符串

相关问题