我在create-react-native-app中动态创建组件。一切正常,使用expo应用程序在开发模式下使用npm start
进行测试,并连接到Android手机。
如果我将其切换到生产模式,或尝试将apk构建为独立应用程序,则不会在按钮上创建对象。
这是我的第一个使用React Native的项目,我不知道如何调试它。 我也一直无法找到任何有关这两种模式之间可能存在差异的信息。
这里有相关代码:
export default class App extends React.Component {
constructor(props) {
super(props);
this.updateState = this.updateState.bind(this);
this.state = {
knobs: [],
key: 1
}
}
add = () => {
let key = this.state.key + 1
let knob = (<Object key={key} updateState={this.updateState}/>);
let knobs = this.state.knobs;
knobs.push(knob);
this.setState({knobs: knobs, key: key})
}
render = () => {
return ([<View>
{this.state.knobs}
<Button onPress={() => this.add()} title='add thing'/>
</View>
]);
}
}
答案 0 :(得分:1)
我不确定导致问题的原因,因为我们没有任何类型的错误消息,但下面的代码片段可能会有所帮助。
当您指定如下的变量时;
let knobs = this.state.knobs;
您没有创建新变量,而是创建对原始属性的引用。因此,你改变了状态。这可能会导致问题。
要设置与当前状态值相关的新状态值,您可以使用functional setState
syntax和destructuring assignment。它更容易使用,更容易阅读。
add = () => {
this.setState((prevState) => {
const { knobs, key } = prevState; // deconstruct array and key from state
const newKnob = (<Object key={(key + 1)} updateState={this.updateState}/>);
knobs.push(newKnob); // push new item to array
return { knobs, key: (key + 1) } //return new state values
});
}
答案 1 :(得分:0)
哦,最后我重写了整个部分。
将要创建的对象移动到渲染功能中。
public class CBigDecimalTest
{
public static void main(String []args)
{
CBigDecimal extendedBigDecimal = new CBigDecimal(new BigDecimal(50));
System.out.println("percentage: " + extendedBigDecimal.percentage(50).doubleValue());
System.out.println("doubleValue: " + extendedBigDecimal.doubleValue());
}
}
此功能在生产模式和App中按预期运行;)