【发布时间】:2018-05-23 04:45:54
【问题描述】:
我正在使用带有 React 的 Fontawesome 5 的专业许可证,并且我为 div 表中的标题单元格创建了一个行标题组件。该单元格具有用于排序图标的 Fontawesome 生成的 svg。我无法让 SVG 重新渲染。
这是我的代码:
export const row = (value, className, clickHandler) => (
<div className={`align-self-center text-center ${className ? className : ''}`} onClick={clickHandler}>
{value}
</div>
);
export const rowHeader = (value, className, sort, clickHandler) => {
let iconClass;
switch (sort) {
case 'asc':
iconClass = 'fas fa-sort-up';
break;
case 'desc':
iconClass = 'fas fa-sort-down';
break;
default:
iconClass = 'fal fa-sort';
break;
}
return row(<span>{value} {iconClass} <i className={iconClass + ' float-right'}/></span>, className + ' clickable', clickHandler);
};
我尝试将<i .../> 创建为单独的组件,但没有成功。图标第一次正确呈现,iconClass 正在我的单元格中更改。但是,SVG 元素不会被重新渲染。
当父元素重新渲染时,如何强制 Fontawesome 生成的 SVG 图标重新渲染?
【问题讨论】:
-
作为临时工作,我在npmjs.com/package/@fortawesome/react-fontawesome 和@fortawesome/fontawesome-free-solid 一起使用NPM 包。这适用于实心图标,但我喜欢使用专业许可证中包含的光图标。我在上面的代码中都使用了。
-
是的,我撒了谎。只有这样的作品。第一次切换 SVG 图标,但之后它们不会重新呈现...
标签: reactjs svg font-awesome