我已经设置了monorepo项目与react-native
和react-native-web
。我共享相同的代码库为Android,iOS和Web。安装react-native-vector-icons后,我已经在所有三个平台上运行代码,它在Android和iOS中工作正常,但在Web中没有。在Web中,它看起来如下:
我已经按照此处的说明设置了Webpack
下面是我的Webpack
配置config-overrides.js
:
const fs = require('fs');
const path = require('path');
const webpack = require('webpack');
const appDirectory = fs.realpathSync(process.cwd());
const resolveApp = relativePath => path.resolve(appDirectory, relativePath);
// our packages that will now be included in the CRA build step
const appIncludes = [
resolveApp('src'),
resolveApp('../components/src'),
];
//below is the config for react-native-vector-icons
const ttf = {
test: /\.ttf$/,
loader: "file-loader",
include: path.resolve(__dirname, "../../node_modules/react-native-vector-icons"),
};
module.exports = function override(config, env) {
// allow importing from outside of src folder
config.resolve.plugins = config.resolve.plugins.filter(
plugin => plugin.constructor.name !== 'ModuleScopePlugin'
);
config.module.rules[0].include = appIncludes;
config.module.rules[1] = ttf; //add the react-native-vector-icons here
config.module.rules[2].oneOf[1].include = appIncludes;
config.module.rules[2].oneOf[1].options.plugins = [
require.resolve('babel-plugin-react-native-web'),
].concat(config.module.rules[2].oneOf[1].options.plugins);
config.module.rules = config.module.rules.filter(Boolean);
config.plugins.push(
new webpack.DefinePlugin({__DEV__: env !== 'production'})
);
return config
};
下面是react-native-vector-icons
在我的App.js
文件中的用法
import Icon from 'react-native-vector-icons/dist/FontAwesome';
<Icon name="glass" size={24}/>
我不知道为什么图标没有加载,或者我错过了什么配置。请帮助我。谢谢你提前。
4条答案
按热度按时间2uluyalo1#
好的,假设你使用的是nextjs和react-native-web,我会一步一步的告诉你如何在web上使用它。
安装所有这些软件包
yarn add react-native-vector-icons react-native-svg next-compose-plugins next-transpile-modules
更新您的next.config.js
转到node_modules/react-native-vector-icons/Fonts,复制所有需要的字体,并将它们粘贴到公共文件夹中,就像您向项目添加自定义字体一样,您需要将所有这些字体包含在您的style.css中
在您的_document. js文件中,确保包含您的style.css文件,如下所示
最后导入
import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
并设置为
<Icon name="google-play" size={30} color="#900" />
哇!!!
3zwjbxry2#
经过大量的研究,最后,我找到了如下所述的解决方案:
vd8tlhqk3#
我刚刚遇到这个问题,但不同的矢量图标从
react-native-paper
。在这种情况下,为了正确显示图标,必须在指向ttf文件的全局ccs中定义自定义字体系列。
https://github.com/oblador/react-native-vector-icons#web-with-webpack
83qze16e4#
我添加了React原生网络到我现有的RN应用程序。
以下是我做的事情。
],