我正在尝试从资产向博览会导入数据库文件。但这不起作用,并在下面向我返回警告:
TypeError:未定义不是对象(正在评估'_expo.default.FileSystem')]
我尝试了很多次,如果我创建一个新数据库,它可以工作,但是如果我尝试从资产中加载一个现有数据库,它将无法工作
class Items extends React.Component {
state = {
items: null
};
componentDidMount = async () => {
await Expo.FileSystem.downloadAsync(
Expo.Asset.fromModule(require("./assets/exu-word.db")).uri,
`${Expo.FileSystem.documentDirectory}SQLite/exu-word.db`
);
let db1 = SQLite.openDatabase("exu-word.db");
};
render() {
const { items } = this.state;
if (items === null || items.length === 0) {
return null;
}
return (
<View style={styles.sectionContainer}>
{items.map(({ id, words }) => (
<TouchableOpacity
key={id}
onPress={() => this.props.onPressItem && this.props.onPressItem(id)}
style={{
backgroundColor: "#fff",
borderColor: "#000",
borderWidth: 1,
padding: 8
}}
>
<Text style={{ color: "#000" }}>{words}</Text>
</TouchableOpacity>
))}
</View>
);
}
update() {
db.transaction(tx => {
tx.executeSql(
`select * from WORDS;`,
[],
(_, { rows: { _array } }) => this.setState({ items: _array })
);
});
}
}
答案 0 :(得分:0)
我与std::vector<int*> v;
int a = 2;
v.push_back(&a);
v[0] = 4; // (a == 4) true
合作。看来Expo改变了它的API。
现在您需要安装一个单独的依赖项:
"sdkVersion": "35.0.0"
然后为您的组件独立导入npm i --save expo-file-system
对象:
FileSystem