title: Plotly Dash - dcc.Store callback firing twice
body: <p>I'm having an issue with Plotly Dash whereby the callback that is triggered by a dcc.Store component is firing twice every time. See the code and example output code below, which is based on the example in the Dash docs (<a href="https://dash.plot.ly/dash-core-components/store" rel="noreferrer">https://dash.plot.ly/dash-core-components/store</a>).</p>
  
  <p>Can anyone explain this or suggest a workaround to prevent it?</p>
  
  <p>Minimal working example code:</p>
  
  <pre><code>import dash
  
  import dash_html_components as html
  import dash_core_components as dcc
  from dash.dependencies import Output, Input, State
  from dash.exceptions import PreventUpdate
  
  app = dash.Dash(__name__)
  
  app.layout = html.Div([
      dcc.Store(id='local', storage_type='local'),
      html.Div(html.Button('localStorage', id='local-button')),
      html.Div(0, id='local-clicks'),
  ])
  
  
  @app.callback(Output('local', 'data'),
                [Input('local-button', 'n_clicks')],
                [State('local', 'data')])
  def on_click(n_clicks, data):
      if n_clicks is None:
          raise PreventUpdate
  
      app.logger.info(f"Updating data store")
  
      data = data or {'clicks': 0}
  
      data['clicks'] = data['clicks'] + 1
      return data
  
  
  @app.callback(Output('local-clicks', 'children'),
                [Input('local', 'modified_timestamp')],
                [State('local', 'data')]
                )
  def on_data(ts, data):
      if ts is None:
          raise PreventUpdate
  
      app.logger.info(f"New data found! ({ts}, {data})")
  
      return f"{ts}, {data['clicks']}"
  
  
  if __name__ == '__main__':
      app.run_server(debug=True, port=8077, threaded=True)
  </code></pre>
  
  <p>Example output:</p>
  
  <pre><code>Running on http://127.0.0.1:8077/
  Debugger PIN: 597-637-135
  New data found! (1584011957193, {'clicks': 24})
  New data found! (1584011957193, {'clicks': 24})
  Updating data store
  New data found! (1584012443177, {'clicks': 25})
  New data found! (1584012443177, {'clicks': 25})
  Updating data store
  New data found! (1584012445159, {'clicks': 26})
  New data found! (1584012445159, {'clicks': 26})
  </code></pre>