Цель моего приложения MERN - получить трехзначный ввод от пользователя и вернуть первое простое число, содержащее эти цифры (например: вы вводите 026, приложение возвращает 10267).Если моя функция checker()
находит совпадение, я запускаю updatePrimeNumber()
, чтобы обновить переменную "match" этого простого числа в true.База данных обновляется правильно.
Я хочу отобразить все простые числа, у которых "match" равно true.У меня есть реквизит primeNumbers
, который содержит все простые числа, которые я ввел в базу данных.Я могу получить доступ к этим числам во всем компоненте, но не могу понять, как отобразить любой из них, правда это или нет.Я получаю сообщение об ошибке: primeNumbers is not defined
.
import React, { Component } from 'react';
import gql from "graphql-tag";
import { graphql, compose } from 'react-apollo';
const PrimeNumbersQuery = gql`
{
primeNumbers {
id
text
match
}
}
`;
const UpdateMutuation = gql`
mutation($id: ID!, $match: Boolean!) {
updatePrimeNumber(id: $id, match: $match)
}
`;
class Prime extends Component {
checker = (primes) => {
let nums = this.props.checkedNumbersFromParent;
let recentChecked = (nums[nums.length - 1].text);
let recentCheckedRegExp = new RegExp(recentChecked);
for (var i in primes) {
let count = 0;
if (primes[i].text.search(recentCheckedRegExp) >= 0 && count < 1) {
this.updatePrimeNumber(primes[i]);
count = count + 1;
break;
}
}
return primes;
}
updatePrimeNumber = async (primeNumber) => {
await this.props.updatePrimeNumber({
variables: {
id: primeNumber.id,
match: primeNumber.match
},
update: store => {
const data = store.readQuery({ query: PrimeNumbersQuery });
data.primeNumbers = data.primeNumbers.map(
x =>
x.id === primeNumber.id
? {
...primeNumber, match: true
}
: x
);
store.writeQuery({ query: PrimeNumbersQuery, data });
}
});
};
render() {
const {data: {loading, primeNumbers}} = this.props;
this.checker(primeNumbers)
return (
<div>
***Need to render all primeNumbers with match === true***
</div>
);
}
}
export default compose(
graphql(UpdateMutuation, {name: 'updatePrimeNumber'}),
graphql(PrimeNumbersQuery)
)(Prime);
Спасибо всем, кто смотрит на это.Это высоко ценится.