Gre*_*ash 6 svg font-awesome reactjs
我正在使用React的Fontawesome 5的专业许可证,我在div表格中为标题单元格创建了一个行标题组件.该单元格为Fontawesome生成了用于排序图标的svgs.我无法让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);
};
Run Code Online (Sandbox Code Playgroud)
我尝试创建<i .../>一个单独的组件,但没有用.第一次正确渲染图标并iconClass在我的单元格中进行更改.但是,SVG元素未被重新呈现.
当父元素重新渲染时,如何强制Fontawesome生成的SVG图标重新渲染?
这是最终有效的解决方案。我找到了使用我的专业许可证的文档。
import FontAwesomeIcon from '@fortawesome/react-fontawesome';
import { faSortDown, faSortUp } from '@fortawesome/fontawesome-pro-solid';
import { faSort } from '@fortawesome/fontawesome-pro-light';
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) => {
return row(<span>{value} {sortIcon(sort)}</span>, className + ' clickable', clickHandler);
};
export const sortIcon = (sort) => {
switch (sort) {
case 'asc':
return <FontAwesomeIcon icon={faSortDown} size='lg' className='float-right'/>;
case 'desc':
return <FontAwesomeIcon icon={faSortUp} size='lg' className='float-right'/>;
default:
return <FontAwesomeIcon icon={faSort} size='lg' className='float-right'/>;
}
};
Run Code Online (Sandbox Code Playgroud)
编辑-澄清:
问题似乎是更改渲染的 SVG 元素上的 CSS 类名称不会导致 React 重新渲染它们。切换到 React Fontawesome 库并更新 FontAwesomeIcon 组件是有效的。
| 归档时间: |
|
| 查看次数: |
1587 次 |
| 最近记录: |