Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 01.05.2024 14:55:14

Laravel Inertia React

Добрый день , может кто нибудь поможет в одном вопросе . На сайте https://inertiajs.com/forms нашел такой пример

import { useState } from 'react'
import { router } from '@inertiajs/react'

export default function Edit() {
  const [values, setValues] = useState({
    first_name: "",
    last_name: "",
    email: "",
  })

  function handleChange(e) {
    const key = e.target.id;
    const value = e.target.value
    setValues(values => ({
        ...values,
        [key]: value,
    }))
  }

  function handleSubmit(e) {
    e.preventDefault()
    router.post('/users', values)
  }

  return (
    <form onSubmit={handleSubmit}>
      <label htmlFor="first_name">First name:</label>
      <input id="first_name" value={values.first_name} onChange={handleChange} />
      <label htmlFor="last_name">Last name:</label>
      <input id="last_name" value={values.last_name} onChange={handleChange} />
      <label htmlFor="email">Email:</label>
      <input id="email" value={values.email} onChange={handleChange} />
      <button type="submit">Submit</button>
    </form>
  )
}

Он великолепно работает с input , но вот моего ума пока не хватает , чтобы переделать его для использования с select . Вот мой пример .

import {Select} from "flowbite-react";
import {router} from "@inertiajs/react";
import {useState} from "react";

export default function Layout() {

    const [values, setValues] = useState({
        page: "",
    })

    function handleChange(e) {
        const key = e.target.id;
        const value = e.target.value
        setValues(values => ({
            ...values,
            [key]: value,
        }))

        router.get('products', values)

    }

    return (
        <>
            <div className="max-w-[6rem]">
                <form>
                    <Select onChange={handleChange}
                            defaultValue={"20"}
                            id="per_page">
                        <option>20</option>
                        <option>40</option>
                        <option>60</option>
                        <option>80</option>
                    </Select>
                </form>
            </div>

        </>
    );
}

Проблема в том , что на сервере константа page всегда Null , а id="per_page" передается с опозданием , т.е передает предыдущее значение . Если кто поможет с доработкой примера , заранее благодарен.  Спасибо.

Не в сети

#2 01.05.2024 17:19:36

Re: Laravel Inertia React

Мне интересно, здесь отвечает кто нибудь? lol
Или вопрос настолько тупой , что нет ответа .
Переделал пока так , вроде как и работает , Прошу хоть покритиковать. tongue

import {Select} from "flowbite-react";
import {router} from "@inertiajs/react";

export default function PageCount({location}) {

    function handleChange(e) {

        const key = e.target.id;
        const value = e.target.value
        const values={[key]: value};

        router.get(`${location}`,values);
    }

    return (
        <>
            <div className="max-w-[10rem]">
                <form>
                    <Select onChange={handleChange}
                            id="per_page">
                        <option>Select per page</option>
                        <option>20</option>
                        <option>40</option>
                        <option>60</option>
                        <option>80</option>
                        <option>100</option>
                    </Select>
                </form>
            </div>

        </>
    );
}

Не в сети

Подвал раздела