Através de um select preciso filtrar algumas informações, mas como faço para o valor da this.state.lista receber o valor da listaFiltrada? A listaFiltrada já recebe as informações necessárias conforme seleciono as opções do select.
const initialState = {
aluno: { id: 0, ra: '', nome: '', codCurso: 0 },
lista: [],
curso: { id: 0, codCurso: 0, nomeCurso: '', periodo: '' },
listaCurso: []
}
export default class CrudCarometro extends Component {
state = { ...initialState }
componentDidMount() {
axios(urlAPI).then(resp => {
this.setState({ lista: resp.data })
})
axios(urlAPICurso).then(resp => {
this.setState({ listaCurso: resp.data })
})
}
atualizaCampo(event) {
const aluno = this.state.aluno
const curso = this.state.curso
aluno.codCurso = Number(curso.codCurso)
const listaFiltrada = this.state.lista.filter(a => a.codCurso == event)
console.log(listaFiltrada)
}
renderForm() {
return (
<center>
<div className="master" id="master">
<select id="filtro" name="codCurso" onChange={e => this.atualizaCampo(e.target.value)}>
<option value="" disabled="disabled" selected="selected">Filtrar</option>
{this.state.listaCurso.map(curso => (<option key={curso.id} value={curso.codCurso}
>{curso.nomeCurso}</option>))}
</select>
{this.state.lista.map(
(aluno) =>
<div className="card" id="card">
<div className="picture" id="picture">
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/9/95/Mel_Gibson_Cannes_2016_2.jpg/330px-Mel_Gibson_Cannes_2016_2.jpg"></img>
</div>
<h2>{aluno.ra}</h2>
<h2>{aluno.nome}</h2>
<h2>{aluno.codCurso}</h2>
</div>
)}
</div>
</center>
)
}
