これはおそらく単純なことですが、私は自分が間違っていることを理解できません。
option
私は別のものを選択したときに変更されていませんが、状態が更新されています。
クラスに基づくコンポーネント(OrcConfig)と2つの関数コンポーネント(salvarOrcamentoとorcSelect)の3つのコンポーネントがあります。最初のものは私のロジックを所有して状態を制御し、2番目のものはデータをフェッチDB
して3番目のものに送信します。select
タグがあり、のリストはoptions
2つのmap
方法で作成されています。最初のものは数を作成しselects
、2番目のものはオプションのリストをそれぞれの中に印刷しますselect
。
これまでのところ良いので、問題があることであるDOM
私が変更されたときに更新されていないoption
、しかしstate
とき実際にはそれだけで起こる、であるstate
私が削除した場合、更新されているthis.setState
問題のvanishsをするので、もちろんこれは解決策ではありませんが、を更新する必要がありstate
ます。私はとの関係を見ることができないことのほかにstate
とselect
、以降component
も、その値を受信していない、それだけでメソッドへのアクセスを持っています。
ここ(または左)に何が欠けていますか?
これが私のアプリの簡略版です。
OrcConfigコンポーネント:
class OrcConfig extends Component {
state = {
cliente: null
}
selecionarClienteHandler = e => {
let clienteNome = this.state.cliente;
clienteNome = e.currentTarget.value.split(',').filter(it => it !== '').join();
this.setState({cliente: clienteNome});
console.log(clienteNome)
}
render () {
return (
<div>
<SalvarOrcamento
selecionarCliente={this.selecionarClienteHandler}
/>
</div>
);
}
}
コンポーネントの保存:
const salvarOrcamento = props => {
let [clientes, setClientes] = React.useState(null)
React.useEffect(() => {
axios.get('/clientes.json')
.then(res => {
let clientesListaArr = Object.keys(res.data)
.map(it => [['nome', it]])
clientesListaArr.unshift([['nome', 'Clientes']])
let clientesLista = clientesListaArr.map(it => Object.fromEntries(it))
setClientes(clientes = clientesLista)
})
.catch(erro => console.log(erro))
}, [])
return (
<div>
<OrcSelect tipos={[clientes]} valorTipo={props.selecionarCliente} />
</div>
)
}
OrcSelectコンポーネント:
const orcSelect = props => {
console.log(props.tipos)
return (
props.tipos.map( (tipo, i) => {
return <select
key={Math.random()}
onChange={props.valorTipo}
name={tipo[0].nome}>
{
tipo.map((item, index) =>
<option
value={[item.valor, item.altura, item.nome, item.furo]}
key={Math.random()} >{item.nome}
</option>
)
}
</select>
})
)
};
これは、OrcSelectがマップするために受信しているものの例です。
[[
{nome: 'João'},
{nome: 'Ricardo'},
{nome: 'Alessandra'},
{nome: 'Ana'}
]]
問題は、状態を変更するとDOMが再レンダリングされることです。この問題を解決するには、選択にvalueプロパティを追加して、選択されている現在のオプションの値を割り当てる必要があります。コンポーネントに新しい属性を渡します
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加