Over a million developers have joined DZone.
{{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
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 }}