2017-06-27 18 views
1

私はreact-tableを使用しており、動作する各列に対してフィルタ方法を持っています。しかし、実際にフィルター入力フィールドをどのようにスタイルするかは分かりません。これは白ですが、背景と混在しています。 https://codepen.io/anon/pen/QgOdOp?editors=0010反応テーブルフィルタ入力フィールドのスタイルを設定するにはどうすればよいですか?

は、私がこのような、この入力フィールドにいくつかの意味的なスタイリングを追加したい:

    <div className="ui icon input"> 
         // Input values would go here 
         <i className="search icon" /> 
        </div> 

はここで、「姓」の欄は、入力フィールドに、フィルタ可能ですcodepenですしかし、入力値を列自体にバインドする方法はわかりません。

私は特定の列に次のように試してみたが、それは何もレンダリングされません。

{ 
    Header: 'Last Name', 
    filterable: true, 
    id: 'lastName', 
    accessor: d => d.lastName 
    Filter: Cellinfo => (
       <div className="ui icon input"> 
        <select onChange={event => onFiltersChange(event.target.value)} value={filter ? filter.value : ''}></select> 
        <i className="search icon" /> 
       </div> 
    ) 
    } 
+0

入力のスタイルを設定する方法は2つありますか?入力値を列にバインドする方法は? –

+0

主に実際にスタイリングを適用する方法。他の部分は、私が想定しているドキュメントからわかるでしょう:) – cbll

+0

入力フィールドにアイコンを追加しようとしていますか?またはあなたはどんなタイプのスタイリングをしたいですか? –

答えて

2

これは、プレーンCSSで達成することができます。テーブルにidまたはclassを与え、必要に応じて入力をターゲットにしてスタイルを設定します。

<ReactTable 
    showFilters={true} 
    data={makeData()} 
    columns={columns} 
    className='react-table' 
/> 

.react-table input { 
    background-color: black; 
    color: white; 
} 

より良いオプションは、内蔵のフィルター用のカスタムUIを定義するFilter列オプションreact-table Sを使用することです。これはCustom Filtering exampleに記載されています。これにより、styleオブジェクトを渡すことができます。

const columns = [ 
    { 
    Header: 'Name', 
    columns: [ 
     { 
     Header: 'First Name', 
     accessor: 'firstName', 
     }, 
     { 
     Header: 'Last Name', 
     filterable: true, 
     id: 'lastName', 
     accessor: d => d.lastName, 
     Filter: ({filter, onChange}) => (
      <input 
      onChange={event => onChange(event.target.value)} 
      value={filter ? filter.value : ''} 
      style={{ 
       width: '100%', 
       backgroundColor: 'gray', 
       color: 'white', 
      }} 
      /> 
     ), 
     }, 
    ], 
    }, 
    { 
    Header: 'Info', 
    columns: [ 
     { 
     Header: 'Age', 
     accessor: 'age', 
     }, 
    ], 
    }, 
]; 

これを使用して、目的のアイコンを実現する背景イメージを定義できます。または、入力の後ろにアイコン要素を設定するカスタムコンポーネントを渡すこともできます。このようなもの:

Filter: ({filter, onChange}) => { 
    return (
     <div style={{position: 'relative'}}> 
     <input 
      onChange={event => onChange(event.target.value)} 
      value={filter ? filter.value : ''} 
      style={{ 
      width: '100%', 
      backgroundColor: 'transparent', 
      color: '#222222', 
      }} 
     /> 
     <i style={{position: 'absolute', right: '10px', lineHeight: '30px'}}> 
      Icon 
     </i> 
     </div> 
) 
); 
+0

2つ目の例を実装してみました。スタイルプロパティを追加しました(現在の列にフィルタ全体をコピーして貼り付けています)。何も変わらない、それはスタイリングに影響しない? – cbll

+0

待機 - それはcodepenで動作しますが、自分の例ではありません。何かがiffyです...これはすべての問題でなければなりません。あなたの助けをありがとう。それを確認する。それは本当に変だけど、私は行をスタイルすることができますが、明らかにフィルター列はそれを取らない。 – cbll

+0

コードを見ずにコピー/貼り付けするだけではありません。 Stackoverflowの多くの例には、擬似コードとタイプミスが含まれています。あなたはそれを働かせることができましたか? –

関連する問題