Simple React component to view cached data and test result from API The 2019 Stack Overflow Developer Survey Results Are InRemoving popup notification, the dirty wayCreate one function instead of two bootstrap modalSimple React calculator - child/parent component communicationReact component to list TV shows from a JSON resultComponent that reacts on data changed from the storeDynamic List Application as first Vue.js AppReact Exercise: Build a dynamic list applicationSimple JavaScript front-end framework for building web componentsAdding Youtube iframe API at runtime - React ComponentSearch Result with infinite scroll React component
Realistic Alternatives to Dust: What Else Could Feed a Plankton Bloom?
Deadlock Graph and Interpretation, solution to avoid
What could be the right powersource for 15 seconds lifespan disposable giant chainsaw?
Adding labels to a table: columns and rows
What does "rabbited" mean/imply in this sentence?
Is domain driven design an anti-SQL pattern?
What is the use of option -o in the useradd command?
Why isn't airport relocation done gradually?
Limit to 0 ambiguity
CiviEvent: Public link for events of a specific type
Spanish for "widget"
Inline version of a function returns different value than non-inline version
Why is the maximum length of OpenWrt’s root password 8 characters?
Why do UK politicians seemingly ignore opinion polls on Brexit?
Potential by Assembling Charges
I see my dog run
Does duplicating a spell with Wish count as casting that spell?
Access elements in std::string where positon of string is greater than its size
Patience, young "Padovan"
Inversion Puzzle
When to use the root test. Is this not a good situation to use it?
In microwave frequencies, do you use a circulator when you need a (near) perfect diode?
Time travel alters history but people keep saying nothing's changed
How long do I have to send my income tax payment to the IRS?
Simple React component to view cached data and test result from API
The 2019 Stack Overflow Developer Survey Results Are InRemoving popup notification, the dirty wayCreate one function instead of two bootstrap modalSimple React calculator - child/parent component communicationReact component to list TV shows from a JSON resultComponent that reacts on data changed from the storeDynamic List Application as first Vue.js AppReact Exercise: Build a dynamic list applicationSimple JavaScript front-end framework for building web componentsAdding Youtube iframe API at runtime - React ComponentSearch Result with infinite scroll React component
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
$begingroup$
This is only the front end side of things which I have at the moment, as the back end is still being worked on. But as this is my first attempt at a react component, I'd like to know if there is anything I can improve on it.
The component has a text area for viewing the current data stored in the cache within our application, another text area for viewing the result when we send that data off to our API and get a transformed version of the data back, as well as two buttons: one for loading the cached data into one of the text areas and one for calling the API with the cached data. This component is used in development/UAT environment for testing purposes.
class DataRevealer extends React.Component
constructor(props)
super(props);
this.state = input: '', result: '';
this.getCachedDataHandler = this.getCachedDataHandler.bind(this);
this.transformDataHandler = this.transformDataHandler.bind(this);
this.inputDataChanged = this.inputDataChanged.bind(this);
getCachedDataHandler()
let cachedData = DataRevealActions.getCachedData();
this.setState(input: cachedData);
transformDataHandler()
if (this.state.input)
let transformedData = DataRevealActions.transformData(this.state.input);
this.setState(result: transformedData);
else
alert('No data to transform');
inputDataChanged(event)
this.setState(input: event.target.value);
get getCachedDataButtonText()
//TODO: localise string
return 'Get Cached Data';
get transformDataButtonText()
//TODO: localise string
return 'Transform Data';
render()
return (
<div className='data-revealer-container'>
<textarea value= this.state.input
className='data-revealer-textarea centred-control'
onChange= this.inputDataChanged
/>
<div className='action-buttons centred-control'>
<Button onClick= this.getCachedDataHandler
className='data-revealer-button centred-control'>
<span> this.getCachedDataButtonText </span>
</Button>
<Button onClick= this.transformDataHandler
className='data-revealer-button centred-control' >
<span> this.transformDataButtonText </span>
</Button>
</div>
<textarea value= this.state.result
className='data-revealer-textarea centred-control'
/>
</div>
);
export default DataRevealer;
Couple of things to note:
- The
Button
is one of our custom controls, it acts as a normal button but with pre-implemented styling tweaks. - The
TODO
may not actually be needed, as the strings may not need to be localised. DataRevealActions
are where the back-end code will go, once that work is done.
javascript react.js user-interface
$endgroup$
bumped to the homepage by Community♦ 15 mins ago
This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
add a comment |
$begingroup$
This is only the front end side of things which I have at the moment, as the back end is still being worked on. But as this is my first attempt at a react component, I'd like to know if there is anything I can improve on it.
The component has a text area for viewing the current data stored in the cache within our application, another text area for viewing the result when we send that data off to our API and get a transformed version of the data back, as well as two buttons: one for loading the cached data into one of the text areas and one for calling the API with the cached data. This component is used in development/UAT environment for testing purposes.
class DataRevealer extends React.Component
constructor(props)
super(props);
this.state = input: '', result: '';
this.getCachedDataHandler = this.getCachedDataHandler.bind(this);
this.transformDataHandler = this.transformDataHandler.bind(this);
this.inputDataChanged = this.inputDataChanged.bind(this);
getCachedDataHandler()
let cachedData = DataRevealActions.getCachedData();
this.setState(input: cachedData);
transformDataHandler()
if (this.state.input)
let transformedData = DataRevealActions.transformData(this.state.input);
this.setState(result: transformedData);
else
alert('No data to transform');
inputDataChanged(event)
this.setState(input: event.target.value);
get getCachedDataButtonText()
//TODO: localise string
return 'Get Cached Data';
get transformDataButtonText()
//TODO: localise string
return 'Transform Data';
render()
return (
<div className='data-revealer-container'>
<textarea value= this.state.input
className='data-revealer-textarea centred-control'
onChange= this.inputDataChanged
/>
<div className='action-buttons centred-control'>
<Button onClick= this.getCachedDataHandler
className='data-revealer-button centred-control'>
<span> this.getCachedDataButtonText </span>
</Button>
<Button onClick= this.transformDataHandler
className='data-revealer-button centred-control' >
<span> this.transformDataButtonText </span>
</Button>
</div>
<textarea value= this.state.result
className='data-revealer-textarea centred-control'
/>
</div>
);
export default DataRevealer;
Couple of things to note:
- The
Button
is one of our custom controls, it acts as a normal button but with pre-implemented styling tweaks. - The
TODO
may not actually be needed, as the strings may not need to be localised. DataRevealActions
are where the back-end code will go, once that work is done.
javascript react.js user-interface
$endgroup$
bumped to the homepage by Community♦ 15 mins ago
This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
add a comment |
$begingroup$
This is only the front end side of things which I have at the moment, as the back end is still being worked on. But as this is my first attempt at a react component, I'd like to know if there is anything I can improve on it.
The component has a text area for viewing the current data stored in the cache within our application, another text area for viewing the result when we send that data off to our API and get a transformed version of the data back, as well as two buttons: one for loading the cached data into one of the text areas and one for calling the API with the cached data. This component is used in development/UAT environment for testing purposes.
class DataRevealer extends React.Component
constructor(props)
super(props);
this.state = input: '', result: '';
this.getCachedDataHandler = this.getCachedDataHandler.bind(this);
this.transformDataHandler = this.transformDataHandler.bind(this);
this.inputDataChanged = this.inputDataChanged.bind(this);
getCachedDataHandler()
let cachedData = DataRevealActions.getCachedData();
this.setState(input: cachedData);
transformDataHandler()
if (this.state.input)
let transformedData = DataRevealActions.transformData(this.state.input);
this.setState(result: transformedData);
else
alert('No data to transform');
inputDataChanged(event)
this.setState(input: event.target.value);
get getCachedDataButtonText()
//TODO: localise string
return 'Get Cached Data';
get transformDataButtonText()
//TODO: localise string
return 'Transform Data';
render()
return (
<div className='data-revealer-container'>
<textarea value= this.state.input
className='data-revealer-textarea centred-control'
onChange= this.inputDataChanged
/>
<div className='action-buttons centred-control'>
<Button onClick= this.getCachedDataHandler
className='data-revealer-button centred-control'>
<span> this.getCachedDataButtonText </span>
</Button>
<Button onClick= this.transformDataHandler
className='data-revealer-button centred-control' >
<span> this.transformDataButtonText </span>
</Button>
</div>
<textarea value= this.state.result
className='data-revealer-textarea centred-control'
/>
</div>
);
export default DataRevealer;
Couple of things to note:
- The
Button
is one of our custom controls, it acts as a normal button but with pre-implemented styling tweaks. - The
TODO
may not actually be needed, as the strings may not need to be localised. DataRevealActions
are where the back-end code will go, once that work is done.
javascript react.js user-interface
$endgroup$
This is only the front end side of things which I have at the moment, as the back end is still being worked on. But as this is my first attempt at a react component, I'd like to know if there is anything I can improve on it.
The component has a text area for viewing the current data stored in the cache within our application, another text area for viewing the result when we send that data off to our API and get a transformed version of the data back, as well as two buttons: one for loading the cached data into one of the text areas and one for calling the API with the cached data. This component is used in development/UAT environment for testing purposes.
class DataRevealer extends React.Component
constructor(props)
super(props);
this.state = input: '', result: '';
this.getCachedDataHandler = this.getCachedDataHandler.bind(this);
this.transformDataHandler = this.transformDataHandler.bind(this);
this.inputDataChanged = this.inputDataChanged.bind(this);
getCachedDataHandler()
let cachedData = DataRevealActions.getCachedData();
this.setState(input: cachedData);
transformDataHandler()
if (this.state.input)
let transformedData = DataRevealActions.transformData(this.state.input);
this.setState(result: transformedData);
else
alert('No data to transform');
inputDataChanged(event)
this.setState(input: event.target.value);
get getCachedDataButtonText()
//TODO: localise string
return 'Get Cached Data';
get transformDataButtonText()
//TODO: localise string
return 'Transform Data';
render()
return (
<div className='data-revealer-container'>
<textarea value= this.state.input
className='data-revealer-textarea centred-control'
onChange= this.inputDataChanged
/>
<div className='action-buttons centred-control'>
<Button onClick= this.getCachedDataHandler
className='data-revealer-button centred-control'>
<span> this.getCachedDataButtonText </span>
</Button>
<Button onClick= this.transformDataHandler
className='data-revealer-button centred-control' >
<span> this.transformDataButtonText </span>
</Button>
</div>
<textarea value= this.state.result
className='data-revealer-textarea centred-control'
/>
</div>
);
export default DataRevealer;
Couple of things to note:
- The
Button
is one of our custom controls, it acts as a normal button but with pre-implemented styling tweaks. - The
TODO
may not actually be needed, as the strings may not need to be localised. DataRevealActions
are where the back-end code will go, once that work is done.
javascript react.js user-interface
javascript react.js user-interface
asked Aug 8 '18 at 7:52
Danny GoodallDanny Goodall
12510
12510
bumped to the homepage by Community♦ 15 mins ago
This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
bumped to the homepage by Community♦ 15 mins ago
This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
$begingroup$
You can just remove the TODO until it's needed. The code will be easier to follow and if someone needs to localize later, they can figure it out themselves. It's clutter.
DataRevealActions
would probably be nice to pass in as properties, so the component is configurable. You could pass it in as now, or just have two different properties,getCachedData
andtransformData
.
Otherwise, looks great!
$endgroup$
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
return StackExchange.using("mathjaxEditing", function ()
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
);
);
, "mathjax-editing");
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "196"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f201187%2fsimple-react-component-to-view-cached-data-and-test-result-from-api%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
You can just remove the TODO until it's needed. The code will be easier to follow and if someone needs to localize later, they can figure it out themselves. It's clutter.
DataRevealActions
would probably be nice to pass in as properties, so the component is configurable. You could pass it in as now, or just have two different properties,getCachedData
andtransformData
.
Otherwise, looks great!
$endgroup$
add a comment |
$begingroup$
You can just remove the TODO until it's needed. The code will be easier to follow and if someone needs to localize later, they can figure it out themselves. It's clutter.
DataRevealActions
would probably be nice to pass in as properties, so the component is configurable. You could pass it in as now, or just have two different properties,getCachedData
andtransformData
.
Otherwise, looks great!
$endgroup$
add a comment |
$begingroup$
You can just remove the TODO until it's needed. The code will be easier to follow and if someone needs to localize later, they can figure it out themselves. It's clutter.
DataRevealActions
would probably be nice to pass in as properties, so the component is configurable. You could pass it in as now, or just have two different properties,getCachedData
andtransformData
.
Otherwise, looks great!
$endgroup$
You can just remove the TODO until it's needed. The code will be easier to follow and if someone needs to localize later, they can figure it out themselves. It's clutter.
DataRevealActions
would probably be nice to pass in as properties, so the component is configurable. You could pass it in as now, or just have two different properties,getCachedData
andtransformData
.
Otherwise, looks great!
answered Aug 13 '18 at 3:14
ndpndp
1,21686
1,21686
add a comment |
add a comment |
Thanks for contributing an answer to Code Review Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f201187%2fsimple-react-component-to-view-cached-data-and-test-result-from-api%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown