Ho un semplice problema con React e gestione degli eventi. La mia componente si presenta così (in pratica una tabella):Evento di reazione e sfocatura
const MyList = ({ items, onBlur }) =>
<table onBlur={onBlur}}>
<thead>
<tr>
<th>ID</th>
<th>Title</th>
<th>Publisher</th>
<th>Year</th>
<th>Author</th>
<th>System</th>
<th/>
</tr>
</thead>
<tbody>
{items.map(item => <MyListRow key={item.Id} item={item}/>)}
</tbody>
</table>;
voglio l'evento blur
al fuoco solo se la messa a fuoco va fuori del tavolo. Invece l'evento si attiva su ogni elemento figlio della tabella quando perde lo stato attivo.
Secondo i documenti, React consente di evidenziare gli eventi di messa a fuoco.
La domanda è: come posso attivare il metodo onBlur
solo quando lo stato attivo esce dalla tabella? IOW: Come posso filtrare e scartare gli eventi indesiderati che ribolliscono in modo da rivelare solo gli eventi che indicano una perdita di concentrazione per il tavolo?
Non sarebbe possibile semplicemente racchiudere la 'tabella' in un' div' e applicare 'onBlur' a' div'? Non si chiamerebbe quando rimuovete il focus dalla 'table' se il' div' comprende solo il 'table'? – Fizz
Non penso che sarebbe diverso dall'usare l'elemento table come target di onBlur poiché nessuno dei due ha un concetto di focus; dovrai comunque controllare se si tratta di un bambino/genitore. Sebbene dopo aver nuovamente esaminato la mia soluzione, mi è venuta un'idea più pulita che evita ReactDOM.findDOMNode! Aggiornare ora. – TheZanke
Ho capito cosa intendi, anche se puoi sempre impostare il 'tabindex' di' div' su 0: P – Fizz