08dbb64ad3b511eb48a4.jpg

Khi hiển thị search box ở màn hình category list, bọn mình sử dụng component SearchBar có sẵn trong ZMP để hiển thị :v, tuy nhiên bọn minh sẽ tự cài đặt phần xử lý event khi click vào thanh search này. Bạn cũng có thể sự dụng luôn phần handle event mà ZMP support cho component này. Chi tiết tham khảo ở link này:

Searchbar | Zalo Mini App

Về phần bọn mình, khi click vào thanh search, app sẽ mở một sheet modal dưới dạng 1 trang để người dùng có thể thay đổi search filter. Sheet Modal cũng là 1 component được ZMP support mà bạn có thể tham khảo chi tiết những properties của nó ở đây

Sheet Modal | Zalo Mini App

Đối với component search-box, sẽ được cài đặt ở dạng form, và sử dụng react-hook-form để bắt những dữ liệu ở các ô filter. Bạn có thể tham khảo đoạn mã sau:

<form onSubmit={handleSubmit(onSubmit)}>
      <Controller
        name="keyword"
        control={control}
        render={({ field }) => (
          <Searchbar
            {...field}
            disableButtonText="Cancel"
            placeholder="Từ khóa"
            clearButton={true}
          />
        )}
      />
      <Select
        {...register("subCategory")}
        label="Danh mục sản phẩm"
        option={subCategoriesList}
      />
      <Title>Khoảng Giá</Title>
      <Select
        {...register("condition")}
        label="Tình trạng sản phẩm"
        option={["Đã qua sử dụng", "Còn mới", "Còn bảo hành"]}
      />
      <Select
        {...register("city")}
        label="Tỉnh/Thành phố"
        onChange={handleChangeDistrictList}
        option={getCities()}
      />
      <Select
        {...register("district")}
        label="Quận/Huyện"
        option={districtOptions}
      />
      <Button type="submit" typeName="primary" large responsive>
        Tìm kiếm
      </Button>
    </form>

Sau khi người dùng thay đổi những filter để tìm kiêm bài đăng theo mong muốn và nhân vào nút tìm kiếm, sheet modal sẽ được đóng và trở lại trang category list với danh sách các bài đăng được thay đổi tương ứng vói danh sách mà api search trả về.

Phần cài đặt đầy đủ của component search-box có thể xem tại đây nhé:

BanLai/search-box.jsx at master · quynhdinh/BanLai