Reputation: 456
I have tried this with console.log and it works, but I am stuck on how to turn it into a div
let N = 13;
let nums = Array.apply(1, { length: N }).map(Number.call, Number)
console.log(nums)
for (let el of nums) {
if (el <= 9) {
time = `0`+el+`:00`;
console.log(time);
} else if (el >= 9) {
time = el+`:00`
console.log(time);
}
}
I want to put it in jsx
class SchedulePage extends React.Component {
render(){
return (
<div className="schedule-page-container">
{right here}
</div>
);
}
}
Upvotes: 1
Views: 950
Reputation: 948
Maybe like this? Render one div
for each number in your nums array:
class SchedulePage extends React.Component {
render(){
let N = 13;
let nums = Array.apply(1, { length: N }).map(Number.call, Number);
return (
<div className="schedule-page-container">
{nums.map(el => {
const time = el <= 9 ? `0${el}:00` : `${el}:00`;
return <div key={time}>{time}</div>;
})
}
</div>
);
}
}
Upvotes: 2
Reputation: 49
import React from 'react';
import './style.css';
export default class App extends React.Component {
state = {
numLength: 13,
nums: []
};
componentDidMount() {
let numArray = Array.apply(1, { length: this.state.numLength }).map(
Number.call,
Number
);
this.setState({ nums: numArray });
}
render() {
return (
<div className="schedule-page-container">
{this.state.nums.map(el=>{
return <>{el <= 9?`0${el}:00`:`${el}:00`}</>
})}
</div>
);
}
}
Try it here: https://stackblitz.com/edit/react-kjqzhx
Upvotes: 1
Reputation: 263
import "./styles.css";
import React from "react";
class SchedulePage extends React.Component {
render() {
let N = 13;
let nums = Array.apply(1, { length: N }).map(Number.call, Number);
function renderTime(nums) {
let time;
for (let el of nums) {
if (el <= 9) {
time = `0` + el + `:00`;
} else if (el >= 9) {
time = el + `:00`;
}
}
return time;
}
return <div className="schedule-page-container">{renderTime(nums)}</div>;
}
}
export default SchedulePage;
Upvotes: 1
Reputation: 760
Do setState(time)
in your condition
let N = 13;
let nums = Array.apply(1, { length: N }).map(Number.call, Number)
console.log(nums)
for (let el of nums) {
if (el <= 9) {
time = `0`+el+`:00`;
setState(time)
console.log(time);
}else if(el >= 9){
time = el+`:00`
setState(time)
console.log(time);
}
}
After that declare state and render state with this.state.time
class SchedulePage extends React.Component {
constructor(props) {
super(props);
this.state = {time : ""};
}
render(){
return (
<div className="schedule-page-container">
{rhis.state.time}
</div>
);
}
}
Next thing you need to do is when your function triggering to run
Upvotes: 1
Reputation: 20701
You will have to save the value somewhere and display it. Pass it down as prop, save it as an instance variable or in your state, there are many options.
class SchedulePage extends React.Component {
constructor(){
super(props);
let N = 13;
let nums = Array.apply(1, { length: N }).map(Number.call, Number)
let time = '';
console.log(nums)
for (let el of nums) {
if (el <= 9) {
time = `0`+el+`:00`;
console.log(time);
}else if(el >= 9){
time = el+`:00`
console.log(time);
}
}
this.state = {
'val' : time
};
}
render(){
return (
<div className="schedule-page-container">
{val}
</div>
);
}
}
Everytime the value of val changes, render will be called. So if this is something changing continuously, take a function outside and call it instead of keeping it in constructor.
Upvotes: 1
Reputation: 143
class SchedulePage extends React.Component {
renderElement() {
let N = 13;
let nums = Array.apply(1, { length: N }).map(Number.call, Number)
let time
console.log(nums)
for (let el of nums) {
if (el <= 9) {
time = `0`+el+`:00`;
}else if(el >= 9){
time = el+`:00`
}
}
return time
}
render(){
return (
<div className="schedule-page-container">
{this.renderElement()}
</div>
);
}
}
Upvotes: 1