2016-12-01 6 views
-1

(Ich verwende JSX mit ES6 Syntax)Mit Requisiten in React style-Attribut

Dies funktioniert:

render() { 
    return (
    <div style={{ width: '95%' }}></div> 
) 
} 

Dies funktioniert nicht: (warum nicht?) Edit: Es tatsächlich funktioniert

render() { 
    return (
    <div style={{ width: this.props.progress + '%' }}></div> 
) 
} 

Edit:

Es funktioniert, aber der Style-Wert muss ein gültiger Wert sein, andernfalls wird der Fehler zurückgegeben.

Ich verwende den Status, um das Stilobjekt zu erstellen und die Eigenschaft mit einem regulären Ausdruck im Konstruktor zu bereinigen, damit es aufgrund ungültiger Werte nicht erneut fehlerhaft wird. Hier ist meine Lösung:

import React, { Component, PropTypes } from 'react' 

export default class ProgressBar extends Component { 
    constructor(props) { 
    super(props) 
    let progress = +props.progress.replace(/[^0-9]/g, '') || 50 
    this.state = { 
     style: { 
     width: progress + '%' 
     } 
    } 
    } 

    render() { 
    return (
    ... 
     <div className="progress-bar" role="progressbar" aria-valuenow={ this.state.progress } style={ this.state.style }></div> 
    ... 
    ) 
    } 
} 
ProgressBar.propTypes = { 
    progress: PropTypes.string.isRequired 
} 
+0

Hängt davon ab, was der Wert von 'this.props.progress' ist. –

+0

@JoeClay es spielt keine Rolle, egal ob String oder Zahl, Sie erhalten '95%'. Ihr Beispiel funktioniert für mich –

+1

@TheReason: Ja, ich frage mich nur, ob er "undefined" oder so etwas bekommt. –

Antwort

0

Am wahrscheinlichsten this.props.progess ist nicht auf einen geeigneten Wert festgelegt. Geben Sie einen guten Standardwert für diesen Fall an:

0

Ihr Beispiel funktioniert wie erwartet.

class Example extends React.Component { 
    render(){ 
    const style = { 
     width: this.props.progress + '%', 
     backgroundColor : 'red' 
    } 
    return <div style={style}> 
     Hello 
    </div> 
    } 
} 
React.render(<Example progress={10}/>, document.getElementById('container')); 

Fiddle. Stellen Sie sicher, dass Sie nicht vergessen, progress Prop mit entsprechenden Wert zu setzen

Verwandte Themen