import * as React from 'react'; import * as classNames from 'classnames'; import {IObservableValue, IComputedValue} from 'mobx'; import {observer} from 'mobx-react'; import '../css/va-row.css'; export interface ListItem { key?: string|number; date?: Date; icon?: string | JSX.Element; main?: string; vice?: string; middle?: string | JSX.Element; midSize?: number; right?: string | JSX.Element; onClick?: () => void; unread?: number|IComputedValue; // <0 表示red dot } export interface ListRowProps extends ListItem { //onClick: () => void; } export interface ListRowState { pressed: boolean; } @observer export class ListRow extends React.Component { constructor(props) { super(props); this.state = { pressed: false, } } render() { let {date, main, vice, middle, midSize, icon, unread, right, onClick} = this.props; let header, isIcon:boolean, noteNum; if (unread !== undefined) { let uv:number; if (typeof unread === 'number') uv = unread; else uv = unread.get(); if (uv > 0) noteNum = {uv}; else if (uv < 0) noteNum = ; } switch (typeof icon) { case 'object': header =
{icon}{noteNum}
; isIcon= false; break; case 'string': header =
{noteNum}
; isIcon= true; break; } let mid; if (middle !== undefined) { switch (typeof middle) { case 'string': mid =
{middle}
; break; default: mid = middle; break; } } let footer; if (right !== undefined) { if (typeof right === 'string') footer =
{right}
; else footer =
{right}
; } let viceSpan; if (vice !== undefined) viceSpan = {vice}; let cn = classNames('va-row', {icon:isIcon, pressed: this.state.pressed}, {"va-action": onClick !== undefined}); return (
  • {header}
    {main}
    {viceSpan}
    {mid} {footer}
  • ); } }