Я пытаюсь выполнить запрос из базы данных, когда пользователь выбирает машину из поля select input
(данные также поступают из базы данных). Я использую редукс-форму. Мой код выглядит следующим образом:
<div className='universal_form-input'>
<label>Mechine Name</label>
<Field
type='number'
name='machine'
component={this.renderSelect}
/>
</div>
И select input
, заполненный именем машины и value
, является id
соответствующей машины. Теперь, когда пользователь выберет компьютер, его состояние будет обновлено значением id
этого компьютера.
Вкл. handleChange
Я пытаюсь вызвать метод с именем queryMachineById
, который должен извлекать данные по заданным параметрам. c machine id
. И запрос должен вернуть noOfDispenser
этой машины из базы данных. (Кстати, этот запрос работает на площадке GraphQL).
handleChange = (event, input) => {
event.preventDefault();
const { name, value } = event.target;
input.onChange(value);
this.setState({ [name]: value });
setTimeout(() => {
this.queryMachineById();
}, 1000);
};
queryMachineById
метод написан, как показано ниже:
queryMachineById = () => {
const machineId = parseInt(this.state.machine);
console.log(typeof machineId, machineId);
return (
<Query query={MACHINE_BY_ID_QUERY} variables={{ machineId }}>
{({ data, loading, error }) => {
if (loading) return <p>Loading...</p>;
if (error) return <p>Error</p>;
console.log(data);
return data.machineById.map(
machine => (initialValues.dispenserNo = machine.noOfDispensers)
);
}}
</Query>
);
};
machineId
также обновляется с действительным значением id
из состояния , Но console.log(data)
внутри queryMachineById
ничего не показывает, даже не пустой {}
Мой GraphQL query
выглядит так:
export const MACHINE_BY_ID_QUERY = gql`
query MACHINE_BY_ID_QUERY($machineId: Int!) {
machineById(machineId: $machineId) {
id
noOfDispensers
}
}
`;
onClick
тоже нет за работой.