Inline Handlers in JSX – Removing Items with Concise and Readable Logic

Inline handlers in React allow you to execute functions directly within JSX. This article demonstrates how to use inline handlers to remove items from a list. Using useState, callback handlers, and the filter method, we manage a dynamic list and define removal logic directly in JSX using arrow functions or bind. We also explore when to extract handlers for better readability.

inline handlercallbackuseState

~2 دقیقه مطالعه · آخرین به‌روزرسانی ۳۰ مهر ۱۴۰۴

Introduction


In React, inline handlers let you execute functions directly inside JSX. This is especially useful when you need to pass arguments to a function, such as removing a specific item from a list.


Creating a Removable List


First, define the list as a stateful value so it can be updated:


const [stories, setStories] = React.useState(initialStories);

Then define a function to remove items:


const handleRemoveStory = (item) => {
  const newStories = stories.filter(
    (story) => item.objectID !== story.objectID
  );
  setStories(newStories);
};

Passing the Handler to Child Components


Pass handleRemoveStory to the List component:


<List list={searchedStories} onRemoveItem={handleRemoveStory} />

Then use it in the Item component.


Using a Traditional Handler


Normally, you’d define a local function first:


const handleRemoveItem = () => {
  onRemoveItem(item);
};

And attach it to the button:


<button onClick={handleRemoveItem}>Dismiss</button>

Using an Inline Handler


To simplify, use an inline arrow function:


<button onClick={() => onRemoveItem(item)}>Dismiss</button>

Or use bind:


<button onClick={onRemoveItem.bind(null, item)}>Dismiss</button>

Best Practices


  • Inline handlers are great for simple logic.
  • If the logic becomes complex, extract it into a separate function.
  • Arrow functions are more common and readable than bind.

Conclusion


Inline handlers in JSX offer a clean way to execute functions with arguments. They simplify code, especially for tasks like removing items from a list. However, when logic grows, it’s better to extract handlers for clarity and maintainability.


نوشته و پژوهش‌شده توسط دکتر شاهین صیامی

مقالات مرتبط

Forms in React – Submitting Data with onSubmit and Action in Search Forms

react-forms-Forms are essential in modern applications. This article walks through building a search form in React using input and button elements. First, we use the onSubmit attribute to manage form submission, then introduce the action attribute to align with native HTML behavior. This structure improves accessibility, readability, and prepares the app for future React updates.submit-search-with-onsubmit-and-action

ادامه

Third-Party Libraries in React – Using Axios and Async/Await for Data Fetching

This article explores how to replace the native fetch API with the more stable and feature-rich Axios library for data fetching in React. It also demonstrates how to refactor promise-based code using async/await and try/catch blocks for improved readability and error handling. These techniques enhance compatibility with older browsers, improve testability, and simplify asynchronous logic.

ادامه

Explicit Data Fetching in React – Controlling API Requests with a Confirmation Button

In the initial implementation, every keystroke in the search field triggered a new API request. This article demonstrates how to shift to explicit data fetching in React, where data is only fetched when the user clicks a confirmation button. By separating the searchTerm and url states, and using useCallback and useEffect, we gain full control over when API requests are sent.

ادامه

Impossible States in React – Predictable State Management with useReducer

Using multiple useState hooks to manage related states like data, loading, and error can lead to impossible states — combinations that should never occur in a well-designed UI. This article shows how to consolidate related states into a single useReducer hook, enabling predictable transitions and eliminating bugs like simultaneous loading and error indicators. By structuring state as a complex object and dispatching clearly defined actions, we gain control and clarity in asynchronous data flows.

ادامه

Advanced State Management in React – Using useReducer for Complex Transitions

While useState is ideal for simple state updates, React’s useReducer hook offers a more scalable solution for managing complex state transitions. This article demonstrates how to migrate story-related state from useState to useReducer, handle multiple actions like setting and removing stories, and refactor reducer logic for clarity. It’s a foundational step toward building robust, declarative state logic in React applications.

ادامه

Conditional Rendering in React – Displaying Loading and Error States for Asynchronous Data

Conditional rendering in React is a powerful tool for controlling what appears in the UI based on different states. This article explains how to show a “Loading…” message while asynchronous data is being fetched, and how to display an error message if the request fails. Using useState and useEffect, we manage isLoading and isError flags, and render content dynamically using ternary and logical operators.

ادامه