JSX является расширением javascript, обычно используемым приложениями реагирования.Он похож на теги html, с угловыми скобками в начале и конце элементов и свойствами этих элементов.Если вы хотите поместить обычный Javascript в JSX, вы можете сделать это с помощью фигурных скобок.У вас есть примеры этого, такие как этот, который имеет некоторый JSX для View, затем переключается обратно на javascript для передачи styles.layouts:
<View style={styles.layouts}>
Вы получаете ошибку, потому что выположить код JavaScript в случайном месте, без использования фигурных скобок.Оставляя некоторые из дополнительных вещей, вы написали:
<TextInput var a = require ("react-native-fs");
Что не является допустимым JSX, поскольку вы не использовали фигурные скобки для переключения обратно на javascript.Кроме того, это не подходящее место для асинхронных операций, таких как запись на диск.Метод рендеринга - это синхронный блок кода, который принимает текущее состояние компонента и возвращает описание того, как должен выглядеть экран.
Где разместить этот код, зависит от того, что вы пытаетесь сделать.Если вы хотите, чтобы это происходило при первом создании компонента, вам нужно поместить код в componentDidMount, который является функцией, которая реагирует на компоненты, которые могут позволить им запускать код при первом монтировании.Например:
import fs from 'react-native-fs';
export default class Component1 extends React.Component {
componentDidMount() {
var path = fs.DocumentDirectoryPath + '../textfile.txt';
fs.writeFile(path, this.state.textInputValue, 'utf8')
.then((success) => {
console.log('File Written');
// Possibly call this.setState if you want Component1 to render with something different now that the write is complete
})
}
render() {
// similar render to before, but without the file system code
}
}
Или, если предполагается, что этот код запускается при нажатии кнопки, вы можете сделать это примерно так:
onButtonPressed() {
var path = fs.DocumentDirectoryPath + '../textfile.txt';
fs.writeFile(path, this.state.textInputValue, 'utf8')
//etc
}
render() {
return (
// other components omitted for brevity
<Button onPress={() => this.onButtonPressed()}/>
)
}