/** @license Copyright (c) 2018 The Polymer Project Authors. All rights reserved. This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as part of the polymer project is also subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt */ import { html } from '@polymer/lit-element'; import { PageViewElement } from './page-view-element.js'; import { connect } from 'pwa-helpers/connect-mixin.js'; // This element is connected to the Redux store. import { store } from '../store.js'; // These are the actions needed by this element. import { increment, decrement } from '../actions/counter.js'; // We are lazy loading its reducer. import counter from '../reducers/counter.js'; store.addReducers({ counter }); // These are the elements needed by this element. import './counter-element.js'; // These are the shared styles needed by this element. import { SharedStyles } from './shared-styles.js'; class MyView2 extends connect(store)(PageViewElement) { _render(props) { return html` ${SharedStyles}

Redux example: simple counter

${props._value}

This page contains a reusable <counter-element>. The element is not built in a Redux-y way (you can think of it as being a third-party element you got from someone else), but this page is connected to the Redux store. When the element updates its counter, this page updates the values in the Redux store, and you can see the current value of the counter reflected in the bubble above.



`; } static get properties() { return { // This is the data from the store. _clicks: Number, _value: Number }} // This is called every time something is updated in the store. _stateChanged(state) { this._clicks = state.counter.clicks; this._value = state.counter.value; } } window.customElements.define('my-view2', MyView2);