{{announcement.body}}
{{announcement.title}}

C# Developer's Guide to React.js (Part 2): Moving Controls

DZone 's Guide to

C# Developer's Guide to React.js (Part 2): Moving Controls

In this post, we'll to extend our React.js application by adding some boxes, and allowing the user to re-arrange them on the screen.

· Web Dev Zone ·
Free Resource

Following on from my previous post, I'm going to extend our React.js application by adding some boxes, and allowing the user to re-arrange them on the screen.

React Concepts

There are two key concepts to consider when working with React, and we'll cover one of them in this post; that is, state.

React has a special property of each component known as state. If you use that to bind any of the UI, then React will refresh that component when the state changes.

Moving a UI Element in React

Okay, that sounds great, but how would we do this in practice?

Imagine that you have a HTML box drawn on the screen; you might have something like this:

<div style="height:100px; width:200px; background:#0000FF" />

We can draw a box. If you use this code, then your box will be on the top left of the screen; so we can tell it not to be by specifying the left and top; let's try defining a CSS style:

<div style="left:10px; top:20px;height:100px; width:200px; background:#0000FF" />

With React, we can set those values to a value derived from the state; for example:

render() {
    const top = this.state.newY;
    const left = this.state.newX;

    const myStyle = {
        height: '100px',
        width: '200px', 
        top: `calc(${top}px)`,
        left: `calc(${left}px)`, 
        borderStyle: 'solid',
        borderColor: 'blue', 
        position: 'absolute',
        zIndex: 1,
        background: 'blue'
    };

    return ( 
        <div> 
            <div style={myStyle}>source</div>
        </div>
    );
}

What this means is that every time I change the state values, the values in the style will update.

To illustrate this, if we write a React application like this (only the timeout function is new):

render() {
    const top = this.state.newY;
    const left = this.state.newX;
    const myStyle = {
        height: '100px',
        width: '200px', 
        top: `calc(${top}px)`,
        left: `calc(${left}px)`, 
        borderStyle: 'solid',
        borderColor: 'blue', 
        position: 'absolute',
        zIndex: 1,
        background: 'blue'
    };

    setTimeout(() => {
        this.setState({newX: this.state.newX + 1, newY: this.state.newY + 1});
    }, 50);

    return ( 
        <div> 
            <div style={myStyle}></div>
        </div>
    );
}

We can make out box move diagonally across the screen:

React UI
React UI

I've included the screenshot because you couldn't possibly imaging what a blue rectangle looks like...

A quick note on VS Code. If you select Terminal -> New from the menu, you can run the React application directly from the IDE; and the best part is that if there's something already running on the port, VS Code will just give you a new one:

React in VS Code
React in VS Code



If you enjoyed this article and want to learn more about React, check out this collection of tutorials and articles on all things React.

Topics:
web dev ,react.js tutorial ,react tutorial ,javascript tutorial ,user interface design

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}