2016-04-22 3 views
1

Я разрабатываю приложение, используя node.js и react.js. Я пытаюсь изменить состояние компонента с помощью onclickhandler. Состояние компонента не изменяется после его отображения в браузере. Однако, если я попытаюсь сделать предупреждение в onclickhandler своей работе. Какая может быть проблема? Вот компонент, который я пытаюсь сделать:React.js, onclick обработчик не меняет состояние компонента

var Server = module.exports = React.createClass({ 

    getInitialState: function() { 
     return { 

      readOnly:"readOnly", 

     } 
     }, 


    onButtonClick: function() { 
     this.setState({readOnly: ""}); 

    }, 

    render: function render() { 

     return (
      <Layout {...this.props}> 
       <div id='index'> 
        <h1>Hello {this.props.name}!</h1> 
        <button onClick={this.onButtonClick}>Click Me</button> 
        <input readOnly={this.state.readOnly} /> 
        <br/> 
        <a href='/'>Click to go to an react-router rendered view</a> 
       </div> 
      </Layout> 
     ); 
    } 
}); 
+1

<Кнопка OnClick = {this.onButtonClick.bind (это)}> Click Me – Ved

+0

Это не работает слишком – medha

ответ

0

Вы должны установить истинный или доступен только для чтения fasle.

onButtonClick: function() { 
     this.setState({readOnly: true or false}); 

    } 

Должно работать.

+0

Все еще не работает! – medha

+0

Это проблема рендеринга? .. Кажется, обработчик onclick не привязан к компоненту – medha

0

Вот способ, которым Вы можете добавить или удалить атрибут элемента

var Example = React.createClass({ 

    getInitialState: function() { 
     return { 
      readOnly: true, 
     } 
    }, 


    onButtonClick: function() { 
     this.setState({readOnly: !this.state.readOnly}); 

    }, 

    render: function render() { 

     return (
      <div {...this.props}> 
       <div id='index'> 
        <h1>Hello {this.props.name}!</h1> 
        <button onClick={this.onButtonClick}>Click Me</button> 
        <input {...(this.state.readOnly) ? {readOnly: 'readOnly'} : {}} /> 
        <br/> 
        <a href='/'>Click to go to an react-router rendered view</a> 
       </div> 
      </div> 
     ); 
    } 
}); 
+0

Или более простая версия может быть Jack7

+0

Эй, я сделал то же самое, что и вы можете видеть из моего кода. Это не работает! – medha

+0

response считает readOnly, отключен и несколько атрибутов в качестве специальных атрибутов и использует логические атрибуты для управления ими в элементах управления формой. Или вы можете использовать код, который я вставил, чтобы вручную добавлять или удалять атрибуты или использовать . Но в обоих случаях я использовал логическое значение вместо строки, чтобы указать состояние. – Jack7

0

В этом входной ответ значение редактируется только если и нажмите на кнопку в противном случае значение входного сигнала не редактируется. Это одна из наиболее простой способ достижения этой цели ...

import React from 'react'; 
 
import ReactDOM from 'react-dom'; 
 

 
class Sample extends React.Component{ 
 
\t constructor(props){ 
 
\t \t super(props); 
 
\t \t this.state={ 
 
\t \t \t inputValue:"praveen" 
 
\t \t } 
 

 
\t \t this.valueChange = this.valueChange.bind(this); 
 
\t } 
 

 
\t valueChange(e){ 
 
\t \t this.setState({inputValue: e.target.value}) 
 
\t } 
 
\t render(){ 
 
\t \t return(
 
\t \t \t <div> 
 
\t \t \t \t <input type="text" value={this.state.inputValue } /> 
 
\t \t \t \t <button type="button" onClick={this.valueChange}>Edit</button> 
 
\t \t \t </div> 
 

 
\t \t) 
 
\t } 
 
} 
 

 
export default Sample; 
 

 
ReactDOM.render(
 
\t 
 
\t <Sample />, 
 
\t 
 
\t document.getElementById('root') 
 
\t); 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Смежные вопросы