2016-07-11 85 views
18

Perché l'attributo colspan non ha effetto in React? Ho creato semplice componente che rende il seguente:Reatt colspan non funziona

<table border="1"> 
    <tr> 
    <th colspan="2">people are...</th> 
    </tr> 
    <tr> 
    <td>monkeys</td> 
    <td>donkeys</td> 
    </tr> 
</table> 

e quello che ottengo è:

enter image description here

mi sto perdendo qualcosa?

Edit: RISOLTO

Ecco la soluzione. React si aspetta che il nome dell'attributo sia colSpan, non colspan. Capito questo dopo aver perso una quantità ridicola di tempo per scoprire questo piccolo fatto malvagio.

+0

Non c'era problema nulla nel codice che vedo. Puoi dire più dettagli? Ecco il violino. Puoi vedere che colspan sta funzionando bene. https://jsfiddle.net/m2jknr70/ –

+0

Leggi il post modificato. React non ama la sintassi html della vecchia scuola –

+4

Si prega di creare una risposta invece di aggiungerla nel testo della domanda. È perfettamente legale su SO rispondere alle proprie domande. – luboskrnac

risposta

20

Da Reagire di documentazione DOM Differences:

Tutte le proprietà DOM e gli attributi (inclusi i gestori di eventi) devono essere in formato camelCase essere coerenti con lo stile standard di JavaScript.

Se si controlla console del browser, vedrai che Reagire si avverte a questo:

<meta charset="UTF-8"> 
 
<script src="https://npmcdn.com/[email protected]/dist/react.js"></script> 
 
<script src="https://npmcdn.com/[email protected]/dist/react-dom.js"></script> 
 
<script src="https://npmcdn.com/[email protected]/browser-polyfill.min.js"></script> 
 
<script src="https://npmcdn.com/[email protected]/browser.min.js"></script> 
 
<div id="app"></div> 
 
<script type="text/babel"> 
 

 
var App = React.createClass({ 
 
    render() { 
 
    return <table border="1"> 
 
     <tbody> 
 
     <tr> 
 
      <th colspan="2">people are...</th> 
 
     </tr> 
 
     <tr> 
 
      <td>monkeys</td> 
 
      <td>donkeys</td> 
 
     </tr> 
 
     </tbody> 
 
    </table> 
 
    } 
 
}) 
 

 
ReactDOM.render(<App who="World"/>, document.querySelector('#app')) 
 

 
</script>

Warning: Unknown DOM property colspan. Did you mean colSpan? 
    in th (created by App) 
    in tr (created by App) 
    in tbody (created by App) 
    in table (created by App) 
    in App 
7

Oltre a modificare il caso, ho avuto anche per cambiare il valore da una stringa a un numero. Invece di questo:

<td colspan='6' /> 

ho dovuto fare questo:

<td colSpan={6} /> 
+1

imbarazzante che questa è la soluzione, ma sicuramente funziona. Grazie Nathan! – Sage