2017-12-08 10 views
2

私はReactでFontawesome 5のプロライセンスを使用しており、divテーブルのヘッダーセルの行ヘッダコンポーネントを作成しました。セルには、ソートアイコン用のFontawesome生成されたsvgがあります。私はSVGを再レンダリングすることはできません。React fontawesome 5 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アイコンを再レンダリングさせるにはどうすればよいですか?

+0

@ fortawesome/fontawesomeフリー-固体と私はhttps://www.npmjs.com/package/@fortawesome/react-fontawesomeでNPMパッケージを使用しています周り。これは実線のアイコンで動作しますが、私はプロライセンスに含まれているライトアイコンを使用したいと考えています。私は上記のコードで両方を使用しています。 – Gremash

+0

さて、私は嘘をついた。それだけの作品です。 SVGアイコンは最初に切り替えられますが、その後は再レンダリングされません... – Gremash

答えて

0

これは最終的に機能した解決策です。プロライセンスを使用するためのドキュメントを見つけることができました。一時的な作業として

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'/>; 
    } 
}; 
関連する問題