You can use Array.join() on an array of objects, but `join()` will only work with strings, so you need to get the property value(s) first. Let's look at some examples.
Should you organise your blog posts into categories, with each post belonging to one category - or tags, where each post can have multiple tags? I don't have the answer, but hopefully this post can help you decide the best way forward!
If you are starting a new blog, taking 5 minutes to decide on the best URL structure can help future-proof your content. Here are some good (and not-so-good) blog URL structures I've used, and why I choose super-simple.
What's the difference between `isLoading` and `isFetching` in React Query? When would you use one and not the other? Let's figure it out and show a nice loading spinner to our users.
In this blog post, we will create a function to delete a folder or directory in AWS S3. Because folders don't actually exist in S3, the function will get the objects at the prefix, and recursively delete them all.
I ran into a few issues setting up a ReactJS app on Cloudflare Pages because only part of my website was a SPA (single-page application). Here's how I fixed routing and got my SPA to work.
Have you added a custom domain to your Cloudflare Pages site, but you can still access the site on `*.pages.dev`? Here's how I used Bulk Redirects to redirect the Cloudflare Pages URL to my custom domain.
How can you schedule static site builds? Run a cron job! And in Cloudflare, you don't even need to use any outside services to do it - you can trigger a worker to run on schedule, whenever you need!
Once you add the Image extension to the Tiptap WYSIWYG editor, users can paste images in from HTML and the clipboard. That may (or may not be) what you want to happen. Here's how I handled image pasting in Tiptap.
In the blog post, we'll create a useDebounce custom hook to delay function calls with React's useCallback and a little time travelling magic. We will also cancel our debounced function when the component unmounts or dependencies change.
There are no collaboration or list-sharing features with Things 3. But it's a great personal task manager. Here's how we set up a Trello board and automations to use Things 3 with a small team.
Need to be able to drag and drop image files into your Tiptap WYSIWYG editor? Tiptap is highly customisable, so let's add some drag-and-drop magic to the Image extension.
Here's a custom hook for adding an autosave feature to ReactJS, without ending up with stale data. It uses setInterval to trigger the save, useEffect to keep things clean, and useRef to keep your save functions fresh.
How should we structure folders and files in Node.js? I was unhappy and slightly confused by the MVC approach, and wanted to move to a more colocation/feature-based structure. Here's what I came up with.
This post will cover how you can specify which queries to invalidate in ReactQuery with queryClient.invalidateQueries(). Here's how to target single queries, multiple queries, active queries and inactive queries.
In React Query, the cacheTime and staleTime options impact how long data gets stored on the client and how often it's re-fetched from the server. Let's look at the difference between cacheTime and staleTime - and how changes to one can impact the other.
When you deploy a new version of your single-page application (like ReactJS), you want your users to see it, right? But what if they have an old version open? Here's how you can force your user's browsers to refresh after releasing a new version of your web app.