首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单击按钮时渲染额外的React组件

单击按钮时渲染额外的React组件
EN

Stack Overflow用户
提问于 2020-08-04 22:09:26
回答 2查看 32关注 0票数 0

我正在做一个项目,当我点击一个按钮时,我会尝试使用React来渲染一些组件。我刚接触React和JavaScript,所以这有点令人困惑。当按钮被单击时,我设置了组件的状态,但它不会重新呈现。我的代码:

代码语言:javascript
复制
import React, {PureComponent} from "react";
import {render} from "react-dom";

let websocket = new WebSocket("ws://localhost:8081");
let scenarios = [];

    
websocket.onopen = function(){
    console.log("Frontend client connected");
    websocket.send("Get all scenarios available");
}

websocket.onmessage = function(event){
    const receivedMessage = event.data;
    
    if(receivedMessage.includes("Available scenarios")){
        scenarios = receivedMessage.split("/");
        console.log(scenarios);
    }
}

class App extends PureComponent{
    state = {
        scenariosReceived: false
    };

    handeStartClick = () => {
        this.setState({
            scenariosReceived : true
        })
    };

  
    render()
    {
    
        return(
            <div id="container">
                <button onClick={this.handeStartClick.bind(this)}>Start</button>
                {this.scenariosReceived? (
                <ol className="scenarios_list">
                    <li><button onClick={this.handleScenarioSelection}>{scenarios[1]}</button></li>
                    <li><button onClick={this.handleScenarioSelection}>{scenarios[2]}</button></li>
                    <li><button onClick={this.handleScenarioSelection}>{scenarios[3]}</button></li>
                    <li><button onClick={this.handleScenarioSelection}>{scenarios[4]}</button></li>
                    <li><button onClick={this.handleScenarioSelection}>{scenarios[5]}</button></li>
                    <li><button onClick={this.handleScenarioSelection}>{scenarios[6]}</button></li>
                    <li><button onClick={this.handleScenarioSelection}>{scenarios[7]}</button></li>
                </ol>
                ) :(console.log("No scenarios received"))
                }
            </div>
        );
    }
}

任何想法都会有所帮助。非常感谢!

EN

回答 2

Stack Overflow用户

发布于 2020-08-04 22:12:28

代码语言:javascript
复制
{this.scenariosReceived? (

你在这里没有从状态中获取值,更正:

代码语言:javascript
复制
{this.state.scenariosReceived? (
票数 0
EN

Stack Overflow用户

发布于 2020-08-04 22:20:39

您可以拥有一个状态,其中包含标识该React组件的对象数组,单击一下即可将另一个对象添加到该数组中。

我将在下面提供我已经实现的代码,用于在react-native中的按钮单击中呈现组件

代码语言:javascript
复制
const [mediaRows, setMediaRow] = useState([
    // here I have a default compont so I have one object by default
    {id: 1, imgUri: '', moreInfo: ''},
]);
// this is the function that executed when the button clicked
const addMediaRow = () => {
  const lastId = mediaRows.length;
  setMediaRow([...mediaRows, {id: lastId + 1, imgUri: ''}]);
};

当该数组的更改发生更改时,将重新呈现下面的JSX

代码语言:javascript
复制
{mediaRows.map((media) => {
      return (
        <View
          key={media.id}
          style={[
            styles.mediaMediaContainer,
            {backgroundColor: colors.primary},
          ]}>
          <Avatar
            onPress={() => uploadImage(media.id)}
            source={
              media.imgUri
                ? {
                    uri: media.imgUri,
                  }
                : undefined
            }
            rounded
            size="medium"
            containerStyle={{
              backgroundColor: colors.backgroundDegree,
              marginRight: 10,
            }}
            icon={{
              name: 'photo-camera',
              size: 24,
              color: Colors.white,
            }}
          />
          <Input
            placeholder="Type More Information"
            overrideStyles={[
              styles.inputOverrideStyles,
              {backgroundColor: colors.mediaInput},
            ]}
          />
        </View>
      );

react和react-native之间的逻辑--您只需要知道JSX的想法,并更改JSX,快乐的编码兄弟

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63248709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档