     handleShipChange: (e) ->
       {$ships} = window
       {_ships} = @state
-      if e
-        @lastShipId = e.target.value
-        [_currentLevel, _nextExp, _goalLevel] = getExpInfo e.target.value
-        @handleExpChange _currentLevel, _nextExp, _goalLevel, @state.mapValue, @state.mapPercent
-      else
-        [_currentLevel, _nextExp, _goalLevel] = getExpInfo @lastShipId
-        @handleExpChange _currentLevel, _nextExp, _goalLevel, @state.mapValue, @state.mapPercent
+      if e && e.target.value != @state.lastShipId
+        @setState
+          lastShipId: e.target.value
+      [_currentLevel, _nextExp, _goalLevel] = getExpInfo @state.lastShipId
+      @handleExpChange _currentLevel, _nextExp, _goalLevel, @state.mapValue, @state.mapPercent
     handleCurrentLevelChange: (e) ->
       @handleExpChange e.target.value, @state.nextExp, @state.goalLevel, @state.mapValue, @state.mapPercent
     handleNextExpChange: (e) ->

        <link rel="stylesheet" href={join(relative(ROOT, __dirname), 'assets', 'exp-calc.css')} />
        <Grid>
          <Col xs={shipRow}>
            <Input type="select" label="舰娘" onChange={@handleShipChange}>
              <option key={0}>空</option>
              {
                {$ships} = window

  link: 'https://github.com/Chibaheit'
  version: '1.1.0'
  reactClass: React.createClass
    getInitialState: ->
      lastShipId: 0
      _ships: null
      currentLevel: 1
      nextExp: 100
