TypeError: serviceName.map is not a function
сам компонент рендерится, но при выборе опшина, ломается.
import React from 'react';
import {
makeStyles
} from '@material-ui/core/styles';
import '@material/react-select/dist/select.css';
import Select, {
Option
} from '@material/react-select';
export default class SelectService extends React.Component {
constructor(props) {
super(props)
this.state = {
serviceName: []
};
}
getServices = _ => {
fetch('http://localhost:3001/prices')
.then(response => response.json())
.then(response => this.setState({
serviceName: response.data
}))
.catch(err => console.log(err))
}
componentDidMount() {
this.getServices();
}
renderServices = ({
id_service,
title
}) =>
<
Option key = {
id_service
}
value = {
title
} > {
title
} < /Option>
render() {
const {
serviceName
} = this.state
return ( <
Select className = "select"
label = 'Выберите Желаемую Услугу'
value = {
serviceName
}
onChange = {
(evt) => this.setState({
serviceName: evt.target.value
}, () => console.log(this.state.serviceName))
} >
{
serviceName.map(this.renderServices)
} <
/Select>
);
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
При текущей реализации и массив вариантов, и выбранное значения хранятся в одном поле в state.serviceName
. После выставления значения, в serviceName
оказывается строка. Нужно разделить
import React from 'react';
import {
makeStyles
} from '@material-ui/core/styles';
import '@material/react-select/dist/select.css';
import Select, {
Option
} from '@material/react-select';
export default class SelectService extends React.Component {
constructor(props) {
super(props)
this.state = {
serviceNames: [], // варианты
serviceName: '' // значение
};
}
getServices = _ => {
fetch('http://localhost:3001/prices')
.then(response => response.json())
.then(response => this.setState({
serviceNames: response.data
}))
.catch(err => console.log(err))
}
componentDidMount() {
this.getServices();
}
renderServices = ({
id_service,
title
}) =>
<
Option key = {
id_service
}
value = {
title
} > {
title
} < /Option>
render() {
const {
serviceNames, serviceName
} = this.state
return ( <
Select className = "select"
label = 'Выберите Желаемую Услугу'
value = {
serviceName
}
onChange = {
(evt) => this.setState({
serviceName: evt.target.value
}, () => console.log(this.state.serviceName))
} >
{
serviceNames.map(this.renderServices)
} <
/Select>
);
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Помоготе разобраться что делают эти 7 строк что я закоментировалНе могу розобраться в длинных jQuery цепочках( Код слайдера:
Есть задача: С элементов страницы собираются данные (ID)Далее их, по очереди, надо отправить на сервер, но чётко последовательно(после завершения-следующий)
Проблема в том что есть сайт на котором спрятан курсор в принципе ( cursor: none ) но когда на мой mac приходит уведомление с другого приложения например...