Written in React, however I didn't use Redux, but I made the same separation of game logic and rendering part, just without Redux. Take a look at the Level class (under GameLogic/ dir), the pressTile() method would be an action in Redux, and all the other public methods would be selectors. So it's easy to see how this translates into Redux.
I didn't put any shouldComponentUpdate() methods in any of the components but it's easy to add them because I used Immutable.js for revealed tiles map, so all the changes would be easy to catch with just equality check.
To run the game: npm start