reSolve supports View Models, ephemeral Read Models created by reducers and maintained on server and client at once.

If you have created applications using the Event Sourcing pattern, or at least investigated it out of curiosity, you have come across the Read Model as a building block of Event Sourcing based applications. The term is not always used in exactly the same way. Some architects use it to describe a data structure used on the read side of a CQRS application, others apply it to the service which delivers such a data structure.

For the purposes of this article, a Read Model is a module of an application system. In an Event Sourcing system, events are published through a bus or a queue, for consumption by application modules. A Read Model receives such events and selectively executes Projection functions to persist parts of the information contained in the events. …


Version 1.0.0 of the DevExtreme React Grid is now available!

The path from the first alpha to this first public release has been long. We have received lots of positive feedback from our early adopters and we can’t wait to see what you will create with the React Grid. The DevExtreme Reactive team is inspired by you. We are also proud to say that we have several external contributors, and we are happy to help you make the product even better.

Image for post
Image for post

Versioning

We will strictly follow the Semantic Versioning 2 specification.

A main goal of our first stable release is to provide a future-proof basis for new features. This implies API stability, and we guarantee there will be no breaking changes in the 1.x …


This post is part of a series about the DevExtreme React Grid. You can find the introduction and overview to the post series by following this link.

At the same time, this post is part of a series describing a demo project that employs various real-world patterns and tools to provide access to data in a MongoDB database for the DevExtreme grid widgets. You can find the introduction and overview to the post series by following this link.

The sample described in this blog post loads data from the data service implemented for my DevExtreme — Real World Patterns post series. …


This post is part of a series about the DevExtreme React Grid. You can find the introduction and overview to the post series by following this link.

As I explained in the first few posts of this series, the React Grid relies heavily on plugins for its functionality. The post on standard plugins outlines the use of those plugins that come in the box with the grid. On top of that, it is possible to create your own plugins to extend grid functionality.

Please note that the APIs described in this post are subject to an internal review right now. The React Grid is still at an “alpha” stage right now and details about those APIs (and others) might change in the future, before a final release version is reached. …


This post is part of a series about the DevExtreme React Grid. You can find the introduction and overview to the post series by following this link.

At the same time, this post is part of a series describing a demo project that employs various real-world patterns and tools to provide access to data in a MongoDB database for the DevExtreme grid widgets. You can find the introduction and overview to the post series by following this link.

The sample described in this blog post loads data from the data service implemented for my DevExtreme — Real World Patterns post series. …


This post is part of a series about the DevExtreme React Grid. You can find the introduction and overview to the post series by following this link.

In this post, I want to take advantage of the fact that the Redux store gives me external access to the Grid state. As I outlined in the previous post, individual React component can certainly have internal state, even if they are used in an application where overall state management is done with Redux. …


This post is part of a series about the DevExtreme React Grid. You can find the introduction and overview to the post series by following this link.

Redux implements a variation of the Flux pattern. In simple terms, it provides a pattern and the tools to handle application state in a predictable and consistent way. If you are not familiar with Redux and the ideas behind it, I recommend reading this very short introduction.

Using Redux in conjunction with the React Grid means to keep state information of the Grid and its various plugins in the Redux store. My sample for this post (as usual, at the bottom) stores all such state information in the Redux store, but it is common enough in real-world applications to make exceptions to this rule. One of the three principles of Redux is to view the store as the single source of truth, but you should keep in mind that the “truth” in question is really only the set of information that is of some meaning to other parts of your application. As such, it is quite legitimate to identify certain parts of a component’s state that should be viewed as internal, and should not be made available to the rest of your code. …


This post is part of a series about the DevExtreme React Grid. You can find the introduction and overview to the post series by following this link.

At this point of its development, the DevExtreme React Grid doesn’t have any built-in functionality to utilize data type specific editors. However, it is easily possible to embed your own editors for certain types, and there is no shortage of existing solutions for UI libraries like Bootstrap.

In the sample for this post (below), I am assigning template functions to editCellTemplate on the TableEditRow plugin and filterCellTemplate on the TableFilterRow.

<TableFilterRow filterCellTemplate={ this.selectFilterEditor } />
<TableEditRow editCellTemplate={ this.selectCellEditor …


This post is part of a series about the DevExtreme React Grid. You can find the introduction and overview to the post series by following this link.

Out of the box, the React Grid comes with several plugins that enable certain control behavior. In a later post, I will show how these plugins can be controlled from React, but for now I will take advantage of the internal functionality of the plugins. Sometimes the term uncontrolled is used for this scenario, hinting at the fact that there is no external influence on a component’s behavior.

Note for clarity that there is one component that is already controlled at this point: the Grid itself, which receives values for its rows and columns from my code. …


This post is part of a series about the DevExtreme React Grid. You can find the introduction and overview to the post series by following this link.

Getting started

Most applications that use React are developed with some kind of build environment. Many introductions and tutorials exist for React, including the one on the project website, so I’m not going to reproduce this part here.

As a quick and easy way tool to create a new React based app, using a standard build environment, I recommend create-react-app.

On the basis of a React application, we have a short getting started section on the first page of the React Grid documentation. I didn’t have any trouble getting the React Grid to work correctly following these instructions, but please let me know in case you encounter any issues! …

About

Oli Sturm

Born. Lived. Still at it.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store