Categories
React Answers

How to Fix the Issue Where Default Prop is not Used When null is Passed as the Prop Value in React?

Sometimes, we may run into to the issue where default prop is not used when null is passed as the prop value in React.

In this article, we’ll look at how to fix the issue where default prop is not used when null is passed as the prop value in React.

Fix the Issue Where Default Prop is not Used When null is Passed as the Prop Value in React

To fix the issue where default prop is not used when null is passed as the prop value in React, we can pass in undefined instead of null as the value of the prop.

For instance, if we have the following default props in our component:

PropertyTitleLabel.defaultProps = {
  bedrooms: 1,
  propertyType: 'flat'
};

Then we write:

<PropertyTitleLabel bedrooms={bedrooms || undefined} />

to set bedrooms to 1 when the bedrooms prop value is undefined.

Conclusion

To fix the issue where default prop is not used when null is passed as the prop value in React, we can pass in undefined instead of null as the value of the prop.

Categories
JavaScript Answers

How to Get the Hour Difference Between Two Times with Moment.js?

To get the hour difference between two times with moment.js, we can use the duration, diff, asHours and asMinutes methods.

For instance, we can write:

const startTime = moment("12:26:59 am", "HH:mm:ss a");
const endTime = moment("06:12:07 pm", "HH:mm:ss a");
const duration = moment.duration(endTime.diff(startTime));
const hours = parseInt(duration.asHours());
const minutes = parseInt(duration.asMinutes()) % 60;

console.log(hours, minutes);

We parse 2 times into moment objects with the moment function.

We pass in the format of the time as the 2nd argument.

Then we call moment.duration with the difference between endTime and startTime that we get with the diff method.

Next, we get the hours part of the duration with the asHours method.

And we get the minutes part of the duration with the asMinutes method and get the remainder of that divided by 60.

Therefore, we get 17 45 from the console log.

Categories
JavaScript Answers

How to Get Paragraph Text Inside an Element with JavaScript?

To get paragraph text inside an element with JavaScript, we can use the innerHTML property of the element.

For instance, if we have:

<p>
  hello world
</p>

Then we write:

const text = document.querySelector('p').innerHTML;
console.log(text)

to get the p element with document.querySelector.

Then we use the innerHTML property to return the text.

Therefore, from the console log, we see that text is:

  hello world
Categories
JavaScript Answers

How to Calculate Date from Week Number in JavaScript?

To calculate date from week number in JavaScript, we can use the JavaScript date setDate and getDate methods.

For instance, we can write:

const getSundayFromWeekNum = (weekNum, year) => {
  const sunday = new Date(year, 0, (1 + (weekNum - 1) * 7));
  while (sunday.getDay() !== 0) {
    sunday.setDate(sunday.getDate() - 1);
  }
  return sunday;
}

console.log(getSundayFromWeekNum(10, 2021))

We create the getSundayFromWeekNum function that takes the weekNum and year parameters that we use to get the Sunday of the given year and week number.

In the function, we create a JavaScript date with the Date constructor with year, 0, (1 + (weekNum - 1) * 7) to get the date given weekNum and year.

Then we add a while loop to subtract 1 day from the sundday date until we reach a Sunday.

Finally, we return that result.

Then when we console log, we get Sun Feb 28 2021 00:00:00 GMT-0800 (Pacific Standard Time).

Categories
JavaScript Answers

How to Generate a 4 Digit Random Number with JavaScript?

To generate a 4 digit random number with JavaScript, we can use the Math.random method.

For instance, we can write:

const val = Math.floor(1000 + Math.random() * 9000);
console.log(val);

We call the Math.random method to generate a random number between 0 and 1.

Then we multiply that by 9000 to get a number between 0 and 9000.

Then to get a number between 0 and 10000, we add 1000 to the returned number.

Finally, we call Math.floor on the generated number to round it down to a number between 1000 and 9999.