当呈现的文本输入为空时,我的应用程序会崩溃,未定义的错误REACT NATIVE

qvtsj1bj  于 2023-05-07  发布在  React
关注(0)|答案(2)|浏览(101)

如何改进下面的代码,使应用程序在“input”值为null时不会崩溃?我知道问题出在“const { input } = route.params;“如果我删除它并添加一些文本输入,然后把它放回去,应用程序就可以工作了。但是,当初始值为null时,刷新应用程序将崩溃。如何实现if语句?
这里我呈现的是“input”,也就是TextInput:

export const IznajmiScreen = ({navigation, route}) => {
  const { input } = route.params;
  
  return (
    <>
    <SectionContainer>
      <Text>{input}</Text>
    </SectionContainer>
    </>
  );
  };

这是我的文本输入屏幕:

export const OpciPodaciOglasInput = ({navigation}) => {
const [input, setInput] = useState("");
return( 
    <>
    <Button title="Save"
    onPress={()=>navigation.navigate("Rent a car", {input})}/>
   <InputContainer>
   <TextInput style={styles.input} 
    placeholder="300 maximum"
    multiline = {true}
    maxLength={300}
    onChangeText={(text)=> setInput(text)}
    returnKeyType='done'
    value={input}
    onSubmitEditing={()=>{
      navigation.navigate('Rent a car',{input});
      setInput("");
    }}
    />
    </InputContainer>  
    </>
  );
};
gcuhipw9

gcuhipw91#

你有没有试过添加一个三元。

<Text>{input === null ? "" : input}<Text>
bvjxkvbb

bvjxkvbb2#

自从升级expo/react-native/xcode后,我一直在iOS上收到同样的错误。
xcode中的错误指向node_modules/react-native/Libraries/vendor/emitter/EventEmitter.js,所以现在你可以自己修补这个文件。
打开node_modules/react-native/Libraries/vendor/emitter/EventEmitter.js并编辑第105行registration.listener.apply(...以读取

if (registration.listener) registration.listener.apply(...

然后运行npx patch-package react-native,这将在patches/文件夹中生成一个文件。现在运行npm install并重新构建应用程序。它不再为我崩溃时,扩大一个文本输入。

相关问题